15.3sum leetcode(array)

来源:互联网 发布:win7组策略设置优化 编辑:程序博客网 时间:2024/05/01 06:28

3Sum Add to List QuestionEditorial Solution
Given an array S of n integers, are there elements a, b, c in S such that a + b + c = 0? Find all unique triplets in the array which gives the sum of zero.
Note: The solution set must not contain duplicate triplets.
For example, given array S = [-1, 0, 1, 2, -1, -4],
A solution set is:
[
[-1, 0, 1],
[-1, -1, 2]
]

vector<vector<int> > threeSum(vector<int> &num) {        vector<vector<int> > ret;        int size = num.size();        sort(num.begin(), num.end());        for(int i = 0; i < size; i ++)        {            //skip same i            while(i > 0 && i < size && num[i] == num[i-1])                i ++;            int j = i + 1;            int k = size - 1;            while(j < k)            {                int sum = num[i] + num[j] + num[k];                if(sum == 0)                {                    vector<int> cur(3);                    cur[0] = num[i];                    cur[1] = num[j];                    cur[2] = num[k];                    ret.push_back(cur);                    j ++;                    k --;                    //skip same j                    while(j < k && num[j] == num[j-1])                        j ++;                    //skip same k                    while(k > j && num[k] == num[k+1])                        k --;                }                else if(sum < 0)                {                    j ++;                }                else                {                    k --;                }            }        }        return ret;    }
0 0
原创粉丝点击