代码拉取完成,页面将自动刷新
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))
}
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。