LeetCode 18. 四数之和

发布时间 2023-05-07 20:58:08作者: 小星code

题目链接:LeetCode 18. 四数之和

题意:

本题思路与LeetCode 15. 三数之和思路完全一样,只是多加了一层for循环

解题思路:

完整代码如下:


func fourSum(nums []int, target int) [][]int {
    // 四元组,四个元素都不相同 ,并且结果要去重

    var res [][]int
    sort.Ints(nums)
    // a < b  < c < d
    for a:=0;a<len(nums);a++{
        if a > 0 && nums[a] == nums[a-1]{
            continue
        }
        for b:=a+1 ;b < len(nums);b++{
            if b > a+1 && nums[b] == nums[b-1]{
                continue
            }
            for c,d:= b + 1,len(nums)-1;c < d; c++{

                if c > b+1 && nums[c] == nums[c-1]{
                    continue
                }
                
                for c < d-1 && nums[a] + nums[b] + nums[c] + nums[d-1] >= target{
                    d--
                }
                if nums[a] + nums[b] + nums[c] + nums[d] == target{
                    res=append(res,[]int{nums[a] , nums[b] , nums[c] , nums[d]})
                }

            }

        }

    }
    return res

}