leetcode 15.三数の和

847 ワード

n個の整数を含む配列numsが与えられ、a+b+c=0となるように、numsに3つの要素a,b,cが存在するか否かが判断される.条件を満たし、繰り返さないすべての三元グループを見つけます.
注意:答えに重複する三元グループは含まれてはいけません.
  ,      nums = [-1, 0, 1, 2, -1, -4],

           :
[
  [-1, 0, 1],
  [-1, -1, 2]
]

考え方:まず考えられるのは配列の2つの数の和がtargetに等しいという判断方法で、この問題は明らかに2つの数の和の変形であるため、まずそれを配列に変えて、それから最初の数を取り出して、残りの数の中で2つの数の和が最初の数に等しい反対の数を見つけて、このように3つの数の和は0に等しい.取り出した次の数と現在の数が等しい場合はスキップします.これは、結果が繰り返されるためです.
class Solution {
public:
    vector> threeSum(vector& nums) {
        vector> res;
        if(nums.size()<3) return res;
        sort(nums.begin(),nums.end());
        for(int i=0;i