アルゴリズム – 二つ取り出して足算

問題説明

整数配列numbers(int[])がパラメータとして与えられます。numbersから違うインデックスの二つの整数を足算して作れる全ての数字を配列に昇順にしてreturnするメソッドを作成してください。

条件

  • numbersの長さは2以上、100以下です。
    • numbersの全ての数字は0以上、100以下です。
  • 足算した結果が重複する場合は、1回だけ保存します。(returnの配列)

入出力の例

numbersresult
[2,1,3,4,1][2,3,4,5,6,7]
[5,0,2,7][2,5,7,9,12]

解説

import java.util.*;
class Solution {
    public int[] solution(int[] numbers) {

        Set<Integer> set = new TreeSet<>();

        for(int i = 0; i<numbers.length; i++) {
            for(int j = i + 1; j < numbers.length; j++) {
                set.add(numbers[i] + numbers[j]);
            }
        }

        return set.stream().mapToInt(Integer::intValue).toArray();
    }
}
  • 足算結果が重複のばあいは1回だけ保存、昇順で返すのが条件なのでTreeSetを使いました。(TreeSet
  • ループを回しながら足算結果をTreeSetに保存します。
  • mapToInt(Integer::intValue):IntegerのSetなのでint型に変換します。
  • toArray():int配列を作成します。

コメントを残す