leetcode15. 三数之和 python实现

题目:

leetcode15题目描述

解法:

  1. 先对数组从小到大排序。
  2. 最外层遍历整个数组,再设置两个双指针,当三数之和小于0时,右指针向左移动一位;当三数之和大于0时,左指针向右移动一位。
  3. 结果中会遇到重复的结果,所以设置一个set,用于存放不重复的数组。

具体代码如下:

class Solution:
    def threeSum(self, nums: List[int]) -> List[List[int]]:
        res_list = []
        res = set()
        nums.sort()

        for i in range(len(nums)):
            left, right = i+1, len(nums)-1  # 双指针

            while left < right:
                if nums[i]+nums[left]+nums[right]>0:
                    right -= 1
                elif nums[i]+nums[left]+nums[right]<0:
                    left += 1
                else:
                    res.add((nums[i],nums[left],nums[right]))
                    left += 1
                    right -= 1
        
        for r in res:
            res_list.append(list(r))
        return res_list
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 1. 找出数组中重复的数字 题目:在一个长度为n的数组里的所有数字都在0到n-1的范围内。数组中某些数字是重复的,...
    BookThief阅读 5,878评论 0 2
  • 数组中重复的数字(一维数组) 问题:在一个长度为长度为n的数组里的所有数字都在0-n-1之间。找出任意一个重复的数...
    Drama_Du阅读 4,860评论 0 0
  • 动态规划 111. 爬楼梯思路类似斐波那契数列注意考虑第 0 阶的特殊情况 272. 爬楼梯 II思路类似上题,只...
    6默默Welsh阅读 7,210评论 0 1
  • Python小白 Leetcode刷题历程 No.11-No.15 盛最多水的容器、整数转罗马字母、罗...
    _LanXiu阅读 3,843评论 1 21
  • 英语本来就是一门非常枯燥的学科,按传统的方法学生就没有兴趣,他们上课无精打采,而他们的状态会感染一批人向他们靠拢。...
    红红_993b阅读 1,121评论 0 0

友情链接更多精彩内容