Skip to content

Commit 965c370

Browse files
committed
Create 0018-4Sum.go solution
1 parent c901198 commit 965c370

File tree

1 file changed

+45
-0
lines changed

1 file changed

+45
-0
lines changed

go/0018-4Sum.go

Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,45 @@
1+
func fourSum(nums []int, target int) [][]int {
2+
if len(nums) < 4 {
3+
return [][]int{}
4+
}
5+
6+
sort.Ints(nums)
7+
8+
result := make([][]int, 0)
9+
10+
for i, ival := range nums {
11+
if i != 0 && nums[i] == nums[i - 1] {
12+
continue
13+
}
14+
15+
for j := i + 1; j < len(nums) - 1; j++ {
16+
if j != i+1 && nums[j] == nums[j-1] {
17+
continue
18+
}
19+
20+
jval := nums[j]
21+
22+
for l, r := j+1, len(nums) - 1; l < r; {
23+
lval, rval := nums[l], nums[r]
24+
25+
sum := ival + jval + lval + rval
26+
switch {
27+
case sum < target:
28+
l++
29+
case sum > target:
30+
r--
31+
default:
32+
result = append(result, []int{ival, jval, lval, rval})
33+
for ; l < r && nums[l] == nums[l+1]; l++ {
34+
}
35+
for ; l < r && nums[r] == nums[r-1]; r-- {
36+
}
37+
l++
38+
r--
39+
}
40+
}
41+
}
42+
}
43+
44+
return result
45+
}

0 commit comments

Comments
 (0)