LeetCode18. 四数之和

题目大意:在一个数字序列中找出不重复的四个元素,使得它们的和等于目标值target

题目分析:本题和LeetCode15 三数之和思路基本相同,只要设置两重循环,先固定前两个数,后两个数的话,只要分别用两个指针指向剩余元素的一头一尾,若当前的和比target大,则后面的指针前移;若当前的和比target小,则前面的指针后移;相等的话,就保存一下。因为结果不能有重复,所有在多处需要去重。去重的思路和LeetCode 15是一样的。


代码展示:

class Solution:
    def fourSum(self, nums, target):
        result = []
        nums.sort()
        for i in range(0,len(nums)-3):
            if i>0 and nums[i]==nums[i-1]:
                continue
            for j in range(i+1,len(nums)-2):
                if j>i+1 and nums[j]==nums[j-1]:
                    continue
                p = j+1
                q = len(nums)-1
                while ptarget:
                        q -= 1
                    else:
                        result.append([nums[i],nums[j],nums[p],nums[q]])
                        while p

你可能感兴趣的:(python,LeetCode,数学,LeetCode)