[C++]プログラマ-2つ引いて加算


問題の説明
整数配列番号.numbersから異なるインデックスの2つの数を抽出し、作成できるすべての数を昇順に配列に入れ、solution関数の戻りを完了してください.
せいげんじょうけん
numbersの長さは2または100以下です.
numbersのすべての数字は0または100以下です.
アルゴリズム#アルゴリズム#
いずれにしても、2つの数を抜いてからすればいいのです.
そして時間の制限に常に注意しなければならない.
入力されたvector(numbers)の長さは100以下であるため,重複する複文を用いても全く問題ない.
そして、「二つの数」なので、誰が見ても重複文を書く問題だと思います.
少し粗いですが、以下のアルゴリズムで解決しました.
  • numbersでは、2つの数のプロトコルのすべての結果を答えに戻します.
  • はもちろんオーバーラップする可能性もありますが、まず1を経た答えをソートします.
  • 以前に学んだ唯一の()を用いて,オーバーラップ数以外の正解を得た.
  • 重なる部分を排除してuniqueが本当に便利だと改めて感じました.
    ソースコード
    #include <bits/stdc++.h>
    
    using namespace std;
    
    vector<int> solution(vector<int> numbers) {
        vector<int> answer;
        
        for(int i = 0; i < numbers.size() - 1; i++)
        {
            for(int j = i + 1; j < numbers.size(); j++)
                answer.push_back(numbers[i] + numbers[j]);
        }
        
        sort(answer.begin(), answer.end());
        
        answer.erase(unique(answer.begin(), answer.end()), answer.end());
        
        return answer;
    }
    フィードバック
  • uniqueを使用する場合は、「ソート」して行う必要があります.