Leetcode 四数之和

思路

和三数之和的类似,首先需要对数组进行排序。用两个嵌套的外部循环(i 和 j)来固定潜在四元组的前两个数字。为了避免重复的四元组,代码会跳过连续相同的数字,无论是对 i 还是对 j。在这些循环内部,它初始化两个指针 left 和 right,left 指向 j 之后的位置,right 指向数组末尾。这两个指针随后向内移动,寻找另外两个数字,使其与 nums[i] 和 nums[j] 相加后等于 target。如果当前和小于 target,left 指针向右移动;如果大于 target,right 指针向左移动。如果和等于 target,则将该四元组添加到结果列表中,然后跳过 left 和 right 指针当前位置上所有紧邻的重复数字,以确保只记录唯一的四元组,之后再继续向内移动。

python 复制代码
class Solution:
    def fourSum(self, nums: List[int], target: int) -> List[List[int]]:
        if not nums:
            return []
        nums.sort()
        res=[] #存储结果
        n=len(nums)
        for i in range(n):
            if i>0 and nums[i]==nums[i-1]:
                continue
            for j in range(i+1,n):
                if j>i+1 and nums[j]==nums[j-1]:
                    continue
                left=j+1
                right=n-1
                while left<right:
                    sum=nums[i]+nums[j]+nums[left]+nums[right]
                    if sum<target:
                        left+=1
                    elif sum>target:
                        right-=1
                    else:
                        res.append([nums[i],nums[j],nums[left],nums[right]])
                        while left<right and nums[left]==nums[left+1]:
                            left+=1
                        while left<right and nums[right]==nums[right-1]:
                            right-=1
                        left+=1
                        right-=1
        return res
相关推荐
2501_941149792 分钟前
面向微服务异步消息队列与可靠投递的互联网系统高可用设计与多语言工程实践分享
leetcode·决策树
天赐学c语言5 分钟前
1.5 - 二叉树中的最大路径 && C++的类型转换
c++·算法·leecode
--JR12 分钟前
015——图(1.图的相关概念与存储)
数据结构·c++·算法·链表·图论
星空露珠19 分钟前
时间罗盘小界面模组
开发语言·数据结构·算法·游戏·lua
小宇的天下36 分钟前
Calibre nmDRC Dimensional Check Operations(ENClosure/EXTernal/INTernal)(16-1)
算法
hz_zhangrl38 分钟前
CCF-GESP 等级考试 2025年12月认证C++五级真题解析
c++·算法·青少年编程·gesp·gesp2025年12月·c++五级
JoannaJuanCV40 分钟前
二维码解码算法:opencv 和 zxing-cpp
人工智能·opencv·算法
Tisfy41 分钟前
LeetCode 1975.最大方阵和:脑筋急转弯
算法·leetcode·矩阵·题解·脑筋急转弯
GeminiJM1 小时前
算法学习常用函数详解
学习·算法
2501_941146321 小时前
多语言分布式任务调度与性能优化实践:Python、Java、Go、C++高效实战方案
leetcode·rabbitmq