Skip to content

Commit d87dac3

Browse files
committed
solve: 3 sum
1 parent 5d9fc46 commit d87dac3

File tree

1 file changed

+56
-0
lines changed

1 file changed

+56
-0
lines changed

3sum/tolluset.ts

Lines changed: 56 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,56 @@
1+
/*
2+
* TC: O(n^2)
3+
* SC: O(n)
4+
* */
5+
function threeSum(nums: number[]): number[][] {
6+
const n = nums.length;
7+
const res: number[][] = [];
8+
9+
nums.sort((a, b) => a - b);
10+
11+
for (let i = 0; i < n - 2; i++) {
12+
if (i > 0 && nums[i] === nums[i - 1]) {
13+
continue;
14+
}
15+
16+
let left = i + 1,
17+
right = n - 1;
18+
19+
while (left < right) {
20+
const sum = nums[i] + nums[left] + nums[right];
21+
22+
if (sum === 0) {
23+
res.push([nums[i], nums[left], nums[right]]);
24+
25+
while (nums[left] === nums[left + 1]) {
26+
left++;
27+
}
28+
29+
while (nums[right] === nums[right - 1]) {
30+
right++;
31+
}
32+
33+
left++;
34+
right--;
35+
36+
continue;
37+
}
38+
39+
if (sum < 0) {
40+
left++;
41+
42+
continue;
43+
}
44+
45+
right--;
46+
}
47+
}
48+
49+
return res;
50+
}
51+
52+
const tc1 = threeSum([-1, 0, 1, 2, -1, -4]); // [[-1,-1,2],[-1,0,1]]
53+
console.info("🚀 : tolluset.ts:39: tc1=", tc1);
54+
55+
const tc2 = threeSum([0, 0, 0]); // [[0,0,0]]
56+
console.info("🚀 : tolluset.ts:42: tc2=", tc2);

0 commit comments

Comments
 (0)