题目链接:LeetCode 15. 三数之和
题意:
在给定的数组中,找出三个数(三个数不重复)使得他们相加的和为 0 ,同时答案中不能有重复的答案
解题思路:
完整代码如下:
//双指针做法首先要有序
// 解法一 最优解,双指针 + 排序
func threeSum(nums []int) [][]int {
var res [][]int
sort.Ints(nums) //对nums数组进行排序
//认为 i < j < k
for i:=0;i<len(nums);i++{ //遍历 i
if i>0 && nums[i] == nums[i-1]{ //去重
continue
}
for j,k:=i+1,len(nums)-1 ;j < k ; j++{ //同时遍历 j 和 k 结束条件 j,k 相遇
if j > i+1 && nums[j] == nums[j-1]{ //同样 去重
continue
}
for j < k-1 && nums[i] + nums[j] +nums[k-1] >=0 {
//目的是为了找到nums[i] + nums[j] +nums[k] > 0 的最小值
k--
}
if nums[i] + nums[j] +nums[k]== 0 {
res = append(res, []int{nums[i], nums[j], nums[k]})
}
}
}
return res
}
标签:15,nums,int,三数,&&,res,LeetCode
From: https://www.cnblogs.com/lxing-go/p/17380138.html