leetcode之4Sum

本文介绍了一种解决四数之和问题的算法实现。该算法基于三数之和问题的解决方案进行了适当的调整,通过双指针技巧进行优化,避免了重复解的出现。文章提供了完整的Python代码示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 这题没有用到特别高的技巧,只是在3sum的基础上稍加变换。得分也只是在中间偏下。看到前面有一波密集的,应该有简单的算法的。代码如下:
class Solution(object):
    def fourSum(self, nums, target):
        """
        :type nums: List[int]
        :type target: int
        :rtype: List[List[int]]
        """
        nums.sort()
        if len(nums) < 4:
            return []
        listofall = []
        
        for i in range(len(nums)):
            for j in range(i + 1, len(nums)):
                if nums[i] + 3 * nums[j] <= target:
                    r = len(nums) - 1
                    l = j + 1
                    while l < r:
                        if nums[i] + nums[j] + nums[l] + nums[r] > target:
                            r = r - 1
                        elif nums[i] + nums[j] + nums[l] + nums[r] < target:
                            l = l + 1
                        else:
                            if [nums[i], nums[j], nums[l], nums[r]] not in listofall:
                                listofall.append([nums[i], nums[j], nums[l], nums[r]])
                            r = r - 1
                            l = l + 1
        return listofall

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值