我是靠谱客的博主 平淡往事,最近开发中收集的这篇文章主要介绍leetcode的三数之和与四数之和(逻辑清晰),觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

目的

当做这道题时,自己试了很多的方法,改了好多遍,最后虽然是通过了但是逻辑有点混乱,看了官方的答案,可以看的懂,逻辑比我写的清晰多了。今天看了一下代码随想录,发现这道题的解法比官方的答案更加清晰。

三数之和代码实现

class Solution:
    def threeSum(self, nums):
        ans = []
        n = len(nums)
        nums.sort()
        for i in range(n):
            left = i + 1
            right = n - 1
            if nums[i] > 0:
                break
            if i >= 1 and nums[i] == nums[i - 1]:
                continue
            while left < right:
                total = nums[i] + nums[left] + nums[right]
                if total > 0:
                    right -= 1
                elif total < 0:
                    left += 1
                else:
                    ans.append([nums[i], 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 ans

四数之和代码实现

class Solution:
    def fourSum(self, nums: List[int], target: int) -> List[List[int]]:
        
        nums.sort()
        n = len(nums)
        res = []
        for i in range(n):
            if i > 0 and nums[i] == nums[i - 1]: continue
            for k in range(i+1, n):
                if k > i + 1 and nums[k] == nums[k-1]: continue
                p = k + 1
                q = n - 1

                while p < q:
                    if nums[i] + nums[k] + nums[p] + nums[q] > target: q -= 1
                    elif nums[i] + nums[k] + nums[p] + nums[q] < target: p += 1
                    else:
                        res.append([nums[i], nums[k], nums[p], nums[q]])
                        while p < q and nums[p] == nums[p + 1]: p += 1
                        while p < q and nums[q] == nums[q - 1]: q -= 1
                        p += 1
                        q -= 1
        return res

大家可以和力扣的官网对比一下,此解法逻辑更加清晰。

最后

以上就是平淡往事为你收集整理的leetcode的三数之和与四数之和(逻辑清晰)的全部内容,希望文章能够帮你解决leetcode的三数之和与四数之和(逻辑清晰)所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(44)

评论列表共有 0 条评论

立即
投稿
返回
顶部