mirror of
https://github.com/chefyuan/algorithm-base.git
synced 2025-08-12 17:52:27 +00:00
添加Go语言题解
This commit is contained in:
@@ -162,3 +162,52 @@ class Solution {
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
|
||||
Go Code:
|
||||
|
||||
```go
|
||||
func threeSum(nums []int) [][]int {
|
||||
res := [][]int{}
|
||||
length := len(nums)
|
||||
if length < 3 {
|
||||
return res
|
||||
}
|
||||
|
||||
sort.Ints(nums)
|
||||
for i := 0; i < length - 2; i++ {
|
||||
// 去重
|
||||
if i != 0 && nums[i] == nums[i - 1] {
|
||||
continue
|
||||
}
|
||||
l, r := i + 1, length - 1
|
||||
for l < r {
|
||||
/*
|
||||
// 下面两个for循环的去重也可以用下面的代码替换
|
||||
if l != i + 1 && nums[l] == nums[l - 1] {
|
||||
l++
|
||||
continue
|
||||
}
|
||||
*/
|
||||
if nums[i] + nums[l] + nums[r] == 0 {
|
||||
res = append(res, []int{nums[i], nums[l], nums[r]})
|
||||
for l < r && nums[l] == nums[l + 1] {
|
||||
l++
|
||||
}
|
||||
for l < r && nums[r] == nums[r - 1] {
|
||||
r--
|
||||
}
|
||||
l++
|
||||
r--
|
||||
} else if nums[i] + nums[l] + nums[r] < 0 {
|
||||
l++
|
||||
} else {
|
||||
r--
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
return res
|
||||
}
|
||||
```
|
||||
|
||||
|
Reference in New Issue
Block a user