美文网首页
leetcode15. 三数之和 python实现

leetcode15. 三数之和 python实现

作者: vvblack4 | 来源:发表于2020-02-22 19:25 被阅读0次

    题目:

    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
    

    相关文章

      网友评论

          本文标题:leetcode15. 三数之和 python实现

          本文链接:https://www.haomeiwen.com/subject/tgcrqhtx.html