月コードチャレンジ第1期[2つ引いて1つ追加]


ふたつ引いてから足す


問題の説明


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

せいげんじょうけん


numbersの長さは2または100以下です.
numbersのすべての数字は0または100以下です.

I/O例


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

I/O例#1

  • 2=1+1.(1この数字には2つあります)
  • 3=2+1.
  • 4=1+3.
  • 5=1+4=2+3.
  • 6=2+4.
  • 7=3+4.
  • したがって、[2,3,4,5,6,7]に戻る必要があります.

    I/O例#2

  • 2=0+2.
  • 5=5+0.
  • 7=0+7=5+2.
  • 9=2+7.
  • 12=5+7.
  • したがって、[2,5,7,9,12]に戻る必要があります.
    import java.util.*;
    
    class Solution {
        public int[] solution(int[] numbers) {
            
            PriorityQueue<String> queue = new PriorityQueue<>();
            
            for(int i = 0; i < numbers.length; i++){
                for(int j = i + 1; j < numbers.length; j++){
                    queue.offer(Integer.toString(numbers[i] + numbers[j]));
                }
            }
            String[] answer = new String[queue.size()];
            int cnt = 0;
            while(queue.size() > 0){
                if(answer[0] == null){
                    answer[cnt] = queue.poll();
                    cnt++;
                }else{
                    if(queue.peek() == answer[cnt - 1]) queue.poll();
                    else{
                        answer[cnt] = queue.poll();
                        cnt++;
                    }
                }
            }
            
            return Arrays.stream(answer).mapToInt(Integer::parseInt).distinct().sorted().toArray();
        }
    }
    function solution(numbers) {
        let answer = [];
        for(let i = 0; i < numbers.length; i++){
            for(let j = i + 1; j < numbers.length; j++){
                answer.push(numbers[i] + numbers[j]);
            }
        }
        answer.sort((a,b) => (a-b));
        return answer.filter((element, index) => {
            return answer.indexOf(element) === index;
        });
    }