3sum 1.0.0
3Sum
Loading...
Searching...
No Matches
Solution Class Reference

Public Member Functions

vector< vector< int > > threeSum (vector< int > &nums)
 

Detailed Description

Definition at line 9 of file main.cpp.

Member Function Documentation

◆ threeSum()

vector< vector< int > > Solution::threeSum ( vector< int > &  nums)
inline

Definition at line 12 of file main.cpp.

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 }

Referenced by main().


The documentation for this class was generated from the following file: