3 Sum 问题
题目链接:lintcode 3 sum (http://www.lintcode.com/en/problem/3sum/)
基本思路
一会写
代码块
具体实现如下:
class Solution {
public:
/**
* @param numbers : Give an array numbers of n integer
* @return : Find all unique triplets in the array which gives the sum of zero.
*/
vector<vector<int> > threeSum(vector<int> &nums)
{
// write your code here
int i,j,l,r;
vector<vector<int>> res;
map<int,int> hash;
if(nums.size()<3)
return res;
sort(nums.begin(),nums.end());
for(i=0;i<nums.size()-1;i++)
{
if(i>0 && nums[i]==nums[i-1])
continue;
l=i+1;
r=nums.size()-1;
while(l<r)
{
int ans=nums[i]+nums[l]+nums[r];
if(ans==0)
{
res.push_back({nums[i],nums[l],nums[r]});
l++;
r--;
while(l<r && nums[l]==nums[l-1])
l++;
while(r>l && nums[r]==nums[r+1])
r--;
}else if(ans>0)
r--;
else
l++;
}
}
return res;
}
};