lhl
首页
python
leetcode
产品思想
软件测试
博客 (opens new window)
github (opens new window)
首页
python
leetcode
产品思想
软件测试
博客 (opens new window)
github (opens new window)
  • python

  • leetcode

    • 数组

      • 双指针

        • 15. 三数之和
        • 19. 删除链表的倒数第 N 个结点
      • 1.两数相加
      • 11. 盛最多水的容器
      • 26.删除有序数组中的重复项
      • 75. 颜色分类
      • 136.只出现一次的数字
      • 283.移动零
      • 448. 找到所有数组中消失的数字
      • 617. 合并二叉树
    • 位运算

    • 动态规划

    • 链表

    • 栈

    • 树

  • 软件测试

  • Git

  • linux

  • 产品

  • MySql

  • docker

  • leetcode
  • array
  • double pointer
2023-04-29

三数之和

https://leetcode.cn/problems/3sum/ (opens new window) 中等 需要注意的点

  1. nums.sort() 排序
  2. if i > 0 and nums[i] == nums[i-1]: 这句判断
  3. 跳过left right
class Solution:
    def threeSum(self, nums: List[int]) -> List[List[int]]:
        if not nums or len(nums) < 3:
            return []

        size = len(nums)
        # 1
        nums.sort()
        res = []
        for i in range(size):
            if i > 0 and nums[i] == nums[i-1]:
                continue
            
            left = i+1
            right = size-1

            while left < right:
                sum = nums[i] + nums[left]+nums[right]
                if sum == 0:
                    res.append([nums[i], nums[left], nums[right]])
                    # 3 
                    while left < right and nums[left] == nums[left+1]:
                        left += 1
                    left += 1
                    while left < right and nums[right] == nums[right-1]:
                        right -= 1
                    right -= 1
                elif sum >0:
                    right -= 1
                else:
                    left += 1
        
        return res
venv
19. 删除链表的倒数第 N 个结点

← venv 19. 删除链表的倒数第 N 个结点→

最近更新
01
lhl learn notes
02
filter
06-09
03
decorator
06-09
更多文章>
Theme by Vdoing
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式