NO.18四数之和

复制代码
#三数之和双指针循环外再加一个循环,但有些细节还是在里面的,需注意
def fourSum(self, nums: List[int], target: int) -> List[List[int]]:
    res = [] #设置空列表做返回值
    if len(nums)<4 :
        return res
    if len(nums)==4 and nums[0]+nums[1]+nums[2]+nums[3]==target:
        return [nums]
    nums.sort() #还是需要排序(从小到大)
    i=0
    while i<len(nums)-3:#for循环也可
        j=i+1
        while j<len(nums)-2:
            l,r = j+1,len(nums)-1
            while l<r:
                quadruplets = [nums[i],nums[j],nums[l],nums[r]]
                sum = nums[i]+nums[j]+nums[l]+nums[r]
                if (sum == target) :
                    res.append(quadruplets)
                    while (l < len(nums) and quadruplets[2] == nums[l]): #此时不用if的原因是排除连续的重复值
                        l += 1
                    while (r > 0 and quadruplets[3] == nums[r]):
                        r-= 1
                elif sum<target:
                    l+=1
                else:
                    r-=1                           
            while (j < len(nums) - 2 and nums[j] == nums[j + 1]):#排除j的重复值
                j += 1
            j += 1
        while (i < len(nums) - 3 and nums[i] == nums[i + 1]):#排除i的重复值
            i += 1
        i += 1

    return res
复制代码

 

 

 

 
 
posted @   是冰美式诶  阅读(20)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· winform 绘制太阳,地球,月球 运作规律
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
点击右上角即可分享
微信分享提示