当前位置: 首页 > article >正文

python-leetcode-三数之和

15. 三数之和 - 力扣(LeetCode)

class Solution:
    def threeSum(self, nums: List[int]) -> List[List[int]]:
        nums.sort()  # 排序
        n = len(nums)
        res = []

        for i in range(n):
            # 剪枝:如果当前数 > 0,三数之和不可能为 0
            if nums[i] > 0:
                break

            # 去重:跳过重复元素
            if i > 0 and nums[i] == nums[i - 1]:
                continue

            # 双指针
            left, right = i + 1, n - 1

            while left < right:
                total = nums[i] + nums[left] + nums[right]

                if total == 0:
                    res.append([nums[i], nums[left], nums[right]])

                    # 去重:跳过相同的 left 和 right
                    while left < right and nums[left] == nums[left + 1]:
                        left += 1
                    while left < right and nums[right] == nums[right - 1]:
                        right -= 1

                    left += 1
                    right -= 1

                elif total < 0:
                    left += 1  # 和偏小,左指针右移
                else:
                    right -= 1  # 和偏大,右指针左移

        return res   


http://www.kler.cn/a/501685.html

相关文章:

  • 【ROS2】☆ launch之Python
  • Nginx配置VTS模块-对接Promethues监控
  • 使用Docker模拟PX4固件的无人机用于辅助地面站开发
  • 【ARM】MDK如何将变量存储到指定内存地址
  • docker实际应用记录
  • Linux之读者写者模型与特殊锁的学习
  • h5使用better scroll实现左右列表联动
  • c++ haru生成pdf输出文本实例
  • Java 如何传参xml调用接口获取数据
  • 后端开发 Springboot整合Redis Spring Data Redis 模板
  • 【大数据】数据科学导论---数据科学的概念
  • 状态模式详解与应用
  • 人工智能之基于阿里云快速搭建语音合成
  • Seata的部署与微服务集成
  • pytorch张量的new_zeros方法介绍
  • python-leetcode-有效的数独
  • Java 将RTF文档转换为Word、PDF、HTML、图片
  • uniapp使用scss mixin抽离css常用的公共样式
  • PyTorch reshape函数介绍
  • 使用Cilium/eBPF实现大规模云原生网络和安全
  • MongoDB 删除集合
  • nginx增加新模块
  • Python orjson ujson有什么区别?
  • 【DevOps】Jenkins使用Pipeline构建java代码
  • AIGC是什么?怎么用?简单三步ToDesk云电脑快速用
  • 前端学习-焦点事件以及键盘事件与典型案例(二十五)