您的位置:首页 > 其它

15 3Sum

2015-12-01 16:33 204 查看
class Solution {
public:
vector<vector<int>> threeSum(vector<int>& nums) {
vector<vector<int>> ans;
int n=nums.size();
if(n<3){
return ans;
}
sort(nums.begin(),nums.end());
for(int p=0;p<n-2;++p){
if(p>0&&nums[p]==nums[p-1]) continue;
int left=p+1;
int right=n-1;
while(left<right){
int m=nums[left]+nums[p]+nums[right];
if(m==0){
vector<int> temp;
temp.push_back(nums[p]);
temp.push_back(nums[left]);
temp.push_back(nums[right]);
ans.push_back(temp);
left++;
right--;
while(left<right&&nums[left]==nums[left-1]){
left++;
}
while(left<right&&nums[right]==nums[right+1]){
right--;
}
}else if(m<0){
left++;
while(left<right&&nums[left]==nums[left-1]){
left++;
}
}else{
right--;
while(left<right&&nums[right]==nums[right+1]){
right--;
}
}
}
}
return ans;

}
};
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: