Skip to content

Commit bef9603

Browse files
committed
update: 18
1 parent d8a09ed commit bef9603

File tree

2 files changed

+45
-0
lines changed

2 files changed

+45
-0
lines changed

‎README.md

+1
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@ This is the solutions collection of my LeetCode submissions, most of them are pr
2222
| 15 | [3Sum](https://leetcode.com/problems/3sum/) | [JavaScript](./src/3sum/res.js) | Medium |
2323
| 16 | [3Sum Closest](https://leetcode.com/problems/3sum-closest/) | [JavaScript](./src/3sum-closest/res.js) | Medium |
2424
| 17 | [Letter Combinations of a Phone Number](https://leetcode.com/problems/letter-combinations-of-a-phone-number/) | [JavaScript](./src/letter-combinations-of-a-phone-number/res.js) | Medium |
25+
| 18 | [4sum](https://leetcode.com/problems/4sum/) | [TypeScript](./src/4sum/res.ts) | Medium |
2526
| 19 | [Remove Nth Node From End of List](https://leetcode.com/problems/remove-nth-node-from-end-of-list/) | [JavaScript](./src/remove-nth-node-from-end-of-list/res.js) | Medium |
2627
| 20 | [valid-parentheses](https://leetcode.com/problems/valid-parentheses/) | [TypeScript](./src/valid-parentheses/res.ts) | Easy |
2728
| 22 | [Generate Parentheses](https://leetcode.com/problems/generate-parentheses/) | [JavaScript](./src/generate-parentheses/res.js) | Medium |

‎src/4sum/res.ts

+44
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,44 @@
1+
function fourSum(nums: number[], target: number): number[][] {
2+
const res: number[][] = [];
3+
4+
if (nums.length < 4) {
5+
return res;
6+
}
7+
8+
nums.sort((a, b) => a - b);
9+
10+
for (let i = 0; i < nums.length-3; i++) {
11+
if (i-1 >=0 && nums[i] === nums[i-1]) {
12+
continue;
13+
}
14+
for (let j = i+1; j < nums.length-2; j++) {
15+
if (j > i+1 && nums[j] === nums[j-1]) {
16+
continue;
17+
}
18+
19+
let k = j+1, l = nums.length-1;
20+
while (k < l) {
21+
const sum = nums[i] + nums[j] + nums[k] + nums[l];
22+
23+
if (sum === target) {
24+
res.push([nums[i], nums[j], nums[k], nums[l]]);
25+
26+
while (k < l && nums[k] === nums[k+1]) {
27+
k++;
28+
}
29+
while (k < l && nums[l] === nums[l-1]) {
30+
l--;
31+
}
32+
k++;
33+
l--;
34+
} else if (sum < target) {
35+
k++;
36+
} else if (sum > target) {
37+
l--;
38+
}
39+
}
40+
}
41+
}
42+
43+
return res;
44+
};

0 commit comments

Comments
 (0)