LeetCode15. 三数之和
作者:互联网
难度:中等
题目描述:
给你一个包含 n 个整数的数组 nums,判断 nums 中是否存在三个元素 a,b,c ,使得 a + b + c = 0
?请你找出所有和为 0 且不重复的三元组。
注意:
答案中不可以包含重复的三元组。
class Solution {
public:
vector<vector<int>> threeSum(vector<int>& nums) {
int n=nums.size();
vector<vector<int>> ans;
if(n<3){
return ans;
}
vector<int> tmp;
sort(nums.begin(),nums.end());
for(int i=0;i<n-2;i++){
if(i>0&&nums[i]==nums[i-1]){
continue;
}
int l=i+1,r=n-1;
while(l<r){
if(nums[l]+nums[r]==-nums[i]){
tmp.clear();
tmp.push_back(nums[i]);
tmp.push_back(nums[l]);
tmp.push_back(nums[r]);
ans.push_back(tmp);
while(l<r&&nums[l]==nums[l+1]){
l++;
}
l++;
while(l<r&&nums[r]==nums[r-1]){
r--;
}
r--;
}else if(nums[l]+nums[r]<-nums[i]){//说明应该向右
while(l<r&&nums[l]==nums[l+1]){
l++;
}
l++;
}else{
while(l<r&&nums[r]==nums[r-1]){
r--;
}
r--;
}
}
}
return ans;
}
};
标签:tmp,nums,三数,back,while,vector,LeetCode15,ans 来源: https://blog.csdn.net/chaokudeztt/article/details/117003272