-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathLeetcode15.cpp
33 lines (30 loc) · 939 Bytes
/
Leetcode15.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) {
vector<vector<int>> res;
int N = nums.size();
if (N < 3) return {};
sort(nums.begin, nums.end());
for(int i = 0; i < N; ++i) {
//避免重复
if(i > 0 && nums[i] == nums[i-1]) continue;
int j = i+1, k = N-1;
while(j < k) {
int sum = sums[i] + sums[j] + sums[k];
if(sum < 0) j++;
if(sum > 0) k--;
else {
res.push_back(nums[i], nums[j], nums[k]);
//避免重复
while(j < k && nums[j+1] == nums[j]) j++;
while(j < k && nums[k] == nums[k-1]) k--;
j++;
k--;
}
}
}
return res;
}
};
//i j k 三指针
// [-1 -1 -1 0 1 2 3]