目录

三数之和

目录

三数之和

题目:

https://leetcode-cn.com/problems/3sum/solution/

思路:

​ 第一眼看就想到了用双指针,注意重复数值的处理问题,算是一个滑动窗口问题

代码:

class Solution:

    def threeSum(self, nums: List[int]) -> List[List[int]]:

        res = []

        if len(nums) < 3:

            return []

        nums.sort()

        for i, num in enumerate(nums):

            if num > 0:

                return res

            if i > 0 and nums[i] == nums[i-1]:

                continue

            left, right = i+1, len(nums) - 1

            while left < right:

                temp = nums[i] + nums[left] + nums[right]

                if temp == 0:

                    res.append([nums[i], nums[left], nums[right]])

                    while left < right and nums[right-1] == nums[right]:

                        right -= 1

                    while left < right and nums[left+1] == nums[left]:

                        left += 1

                    left += 1

                    right -= 1

                if temp > 0:

                    right -=1

                if temp < 0:

                    left += 1

        return res