美文网首页
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