-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy path3Sum
More file actions
33 lines (33 loc) · 1.04 KB
/
Copy path3Sum
File metadata and controls
33 lines (33 loc) · 1.04 KB
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
#define vi(x) vector<x>
class Solution {
public:
vector<vector<int>> threeSum(vector<int>& nums) {
vi(vi(int)) out;
if(nums.size()<=2) return out;
sort(nums.begin(), nums.end());
int frst = 0, secnd = 1, third = nums.size()-1;
for(;frst< nums.size()-2; frst++)
{
while(frst != 0 && frst < nums.size() && nums[frst-1]==nums[frst]) frst++;
secnd = frst+1;third = nums.size()-1;
while(secnd < third)
{
if(nums[frst]+nums[secnd]+nums[third] == 0)
{
out.push_back(vi(int){nums[frst], nums[secnd], nums[third]});
secnd++;
while(secnd < nums.size() && nums[secnd-1] == nums[secnd]) secnd++;
}
else if(nums[frst]+nums[secnd]+nums[third] < 0)
{
secnd++;
}
else
{
third--;
}
}
}
return out;
}
};