3sum
1.0.0
3Sum
Loading...
Searching...
No Matches
main.cpp
Go to the documentation of this file.
1
#include <iostream>
2
#include <unordered_map>
3
#include <vector>
4
#include <set>
5
#include <algorithm>
6
7
using namespace
std;
8
9
class
Solution
10
{
11
public
:
12
vector<vector<int>>
threeSum
(vector<int>& nums)
13
{
14
vector<vector<int>> result;
15
sort(nums.begin(), nums.end());
16
int
length = nums.size();
17
for
(
int
i = 0; i < length; ++i)
18
{
19
// skip duplicates
20
if
(i > 0 && nums[i] == nums[i - 1])
21
continue
;
22
23
int
target = -nums[i];
// fixing ith element as target for two sum
24
int
left = i + 1;
25
int
right = length - 1;
26
27
while
(left < right)
28
{
29
int
sum = nums[left] + nums[right];
30
if
(sum == target)
31
{
32
result.push_back({nums[i], nums[left], nums[right]});
33
34
// skip duplicates for left pointer
35
while
(left < right && nums[left] == nums[left + 1])
36
++left;
37
38
// skip duplicates for right pointer
39
while
(left < right && nums[right] == nums[right - 1])
40
--right;
41
42
++left;
43
--right;
44
}
45
else
if
(sum < target)
46
++left;
47
else
// sum >= target
48
--right;
49
}
50
}
51
return
result;
52
}
53
};
54
55
int
main
()
56
{
57
vector<int> nums = {-1,0,1,2,-1,-4,-2,-3,3,0,4};
58
Solution
sol;
59
vector<vector<int>> answer = sol.
threeSum
(nums);
60
for
(vector<int>& array: answer)
61
{
62
for
(
int
el: array)
63
cout << el <<
" "
;
64
cout <<
". "
;
65
}
66
cout << endl;
67
return
0;
68
}
Solution
Definition
main.cpp:10
Solution::threeSum
vector< vector< int > > threeSum(vector< int > &nums)
Definition
main.cpp:12
main
int main()
Definition
main.cpp:55
main.cpp
Generated by
1.9.8