-
Notifications
You must be signed in to change notification settings - Fork 241
/
Copy path3 Sum.cpp
33 lines (33 loc) · 1.02 KB
/
3 Sum.cpp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
class Solution {
public:
vector<vector<int>> threeSum(vector<int>& nums) {
ios_base::sync_with_stdio(false);
cin.tie(NULL);
int n=nums.size();
sort(nums.begin(),nums.end());
vector<vector<int>>ans;
int n1,j,k;
for(int i=0;i<n-2;i++) {
if(i==0 || (i>0 && nums[i]!=nums[i-1])) {
n1=-nums[i];
j=i+1;k=n-1;
while(j<k) {
int s=nums[j]+nums[k];
if(s==n1) {
ans.push_back({-n1,nums[j],nums[k]});
while(j+1<k && nums[j]==nums[j+1]) j++;
while(k-1>j && nums[k]==nums[k-1]) k--;
j++;k--;
}
else if(s<n1) {
j++;
}
else {
k--;
}
}
}
}
return ans;
}
};