1 Star 0 Fork 0

catyMap/AlgorithmNote

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
克隆/下载
fourSum.go 1.01 KB
一键复制 编辑 原始数据 按行查看 历史
dogemap 提交于 2021-05-06 23:09 . 添加动态规划等题目
package main
import (
"fmt"
"sort"
)
func fourSum(nums []int, target int) (res [][]int) {
// 用三数之和的思路试试
sort.Ints(nums)
left , leftMid , rightMid , right, n := 2 , 0 , 1, len(nums)-1, len(nums)
for leftMid < n - 3 {
rightMid = leftMid + 1
for rightMid < n - 2 {
left ,right = rightMid + 1 , n - 1
// 移动左右指针
for left < right {
v := nums[left] + nums[leftMid] + nums[rightMid] + nums[right]
if v == target {
res = append(res, []int{nums[left],nums[leftMid],nums[rightMid],nums[right]})
for right > rightMid && nums[right-1] == nums[right] {
right --
}
}
if v < target {
left ++
}else {
right --
}
}
// 移动右value到新值
rv := nums[rightMid]
for rightMid < n - 2 && rv == nums[rightMid] {
rightMid ++
}
}
// 移动左value到新值
lv := nums[leftMid]
for leftMid < n - 3 && lv== nums[leftMid] {
leftMid ++
}
}
return res
}
func main() {
fmt.Println(fourSum([]int{0,0,0,0,0,0,0,0,0},0))
}
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
Go
1
https://gitee.com/dogemap/algorithm-note.git
git@gitee.com:dogemap/algorithm-note.git
dogemap
algorithm-note
AlgorithmNote
dc486f96f6c1

搜索帮助

D67c1975 1850385 1daf7b77 1850385