[プログラマーレベル1]2つのプラス記号を引いて問題を解く



に質問


整数配列番号.numbersから異なるインデックスの2つの数を抽出し、作成できるすべての数を昇順に配列に入れ、solution関数の戻りを完了してください.

せいげんじょうけん

  • numbersの長さは2以上100以下である.
  • numbersのすべての数字が0または100以下である.
  • 🖨️ I/O例



    💡 に答える

    import java.util.ArrayList;
    import java.util.Collections;
    
    class Solution {
    
        public int[] solution(int[] numbers) {
            ArrayList<Integer> arr = new ArrayList<Integer>();
    
            for(int i = 0; i < numbers.length; i++) {
                for(int j = i + 1; j < numbers.length; j++) {
                    // 중복 제거
                    if(!arr.contains(numbers[i] + numbers[j]))
                    arr.add(numbers[i] + numbers[j]);
                }
            }
    
            // 정렬
            Collections.sort(arr);
    
            // 정답 배열에 넣어주기
            int[] answer = new int[arr.size()];
            int idx = 0;
            for (int i : arr) {
                answer[idx++] = i;
            }
    
            return answer;
        }
    }

    ✏️ comment

  • Collections.sort(arr)ArrayListソート可能.
  • ArrayListは重複が許可されているため、重複するコードをチェックする必要がある.
  • HashSetは重複を許さないため、HashSetを用いて実現する方法もある.HashSet<Type> name = new HashSet<>();