Skip to content

Commit 0cfa37c

Browse files
authored
Update 3Sum - Leetcode 15.js
1 parent 2ed620c commit 0cfa37c

File tree

1 file changed

+36
-0
lines changed

1 file changed

+36
-0
lines changed

3Sum - Leetcode 15/3Sum - Leetcode 15.js

Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,5 @@
1+
// Hashmap Solution:
2+
13
/**
24
* @param {number[]} nums
35
* @return {number[][]}
@@ -25,3 +27,37 @@ var threeSum = function(nums) {
2527

2628
return Array.from(result, str => str.split(',').map(Number));
2729
};
30+
31+
32+
// Two Pointer Solution:
33+
var threeSum = function(nums) {
34+
nums.sort((a, b) => a - b);
35+
let n = nums.length;
36+
let answer = [];
37+
38+
for (let i = 0; i < n; i++) {
39+
if (nums[i] > 0) {
40+
break;
41+
}
42+
if (i > 0 && nums[i] === nums[i - 1]) {
43+
continue;
44+
}
45+
let lo = i + 1, hi = n - 1;
46+
while (lo < hi) {
47+
let sum = nums[i] + nums[lo] + nums[hi];
48+
if (sum === 0) {
49+
answer.push([nums[i], nums[lo], nums[hi]]);
50+
lo++;
51+
hi--;
52+
while (lo < hi && nums[lo] === nums[lo - 1]) lo++;
53+
while (lo < hi && nums[hi] === nums[hi + 1]) hi--;
54+
} else if (sum < 0) {
55+
lo++;
56+
} else {
57+
hi--;
58+
}
59+
}
60+
}
61+
62+
return answer;
63+
};

0 commit comments

Comments
 (0)