3Sum
2014-05-07 23:19
281 查看
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:
Elements in a triplet (a,b,c) must be in non-descending order. (ie, a ≤ b ≤ c)
The solution set must not contain duplicate triplets.
最主要的是对相同的数据进行处理。
0? Find all unique triplets in the array which gives the sum of zero.
Note:
Elements in a triplet (a,b,c) must be in non-descending order. (ie, a ≤ b ≤ c)
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)
最主要的是对相同的数据进行处理。
class Solution { public: vector<vector<int> > threeSum(vector<int> &num) { sort(num.begin(),num.end()); vector<vector<int> >result; vector<int>temp; int n = num.size(); if(n < 3){ return result; } for(int i=0; i<n-2 && num[i]<=0; ++i){ if(i > 0 && num[i]==num[i-1]){ continue; } int j= i + 1; int k= n - 1; while(j < k) { if(j > i + 1 && num[j] == num[j - 1]){ j++; continue; } if(k < n - 1 && num[k] == num[k + 1]){ k--; continue; } int sum = num[i] + num[j] + num[k]; if(sum < 0){ j++; } else if(sum > 0){ k--; } else if(sum == 0) { temp.clear(); temp.push_back(num[i]); temp.push_back(num[j]); temp.push_back(num[k]); result.push_back(temp); j++; k--; } } } return result; } };
相关文章推荐
- [Leetcode]3Sum
- leetcode 57: 3Sum Closest
- 【leetcode】3Sum Closest
- [leetcode]3Sum
- 【leetcode】3Sum
- 【LeetCode】3Sum Closest
- LeetCode 3Sum 三个数和为零的集合 C++完整程序
- 3Sum
- 3Sum Closest Total
- [Leetcode]3Sum
- LeetCode:3Sum, 3Sum Closest, 4Sum
- LeetCode – 3Sum
- leetcode 16 3Sum Closest
- LeetCode 016 3Sum Closest
- #LeetCode 3Sum
- 3Sum
- LeetCode OJ - 3Sum、3Sum Closest、4Sum
- 3Sum Closest
- 3Sum
- LeetCode "3Sum closest"