给定一个长度是 n 的数组 nums ,和一个目标值 target,请你找出不重复的四元组 [nums[a],nums[b],nums[c],nums[d]] (如果四元组的元素一一对应则只输出其中一组)
同时四元组要满足 各不相同,
你可以按任意顺序输出
数据范围: ,
[2,0,-2,3,-3,0],0
[[2,-2,0,0],[3,-3,0,0],[2,-2,3,-3]]
package main import "sort" /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * * @param nums int整型一维数组 * @param target int整型 * @return int整型二维数组 */ func fournumber( nums []int , target int ) [][]int { ans:=[][]int{} sort.Ints(nums) for i:=0;i<len(nums);i++{ if i>0&&nums[i]==nums[i-1]{ continue } for j:=i+1;j<len(nums);j++{ if j>i+1&&nums[j]==nums[j-1]{ continue } l,r:=j+1,len(nums)-1 for l<r{ sum:=nums[i]+nums[j]+nums[l]+nums[r] if sum==target{ ans=append(ans,[]int{nums[i],nums[j],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 sum>target{ r-- }else{ l++ } } } } return ans }