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

【leetcode】15.三数之和

文章目录

    • 题目
    • 题解

题目

15.三数之和
给你一个整数数组 nums ,判断是否存在三元组 [nums[i], nums[j], nums[k]] 满足 i != j、i != k 且 j != k ,同时还满足 nums[i] + nums[j] + nums[k] == 0 。请你返回所有和为 0 且不重复的三元组。

注意:答案中不可以包含重复的三元组。

示例 1:

输入:nums = [-1,0,1,2,-1,-4]
输出:[[-1,-1,2],[-1,0,1]]
解释:
nums[0] + nums[1] + nums[2] = (-1) + 0 + 1 = 0 。
nums[1] + nums[2] + nums[4] = 0 + 1 + (-1) = 0 。
nums[0] + nums[3] + nums[4] = (-1) + 2 + (-1) = 0 。
不同的三元组是 [-1,0,1] 和 [-1,-1,2] 。
注意,输出的顺序和三元组的顺序并不重要。

示例 2:

输入:nums = [0,1,1]
输出:[]
解释:唯一可能的三元组和不为 0 。

示例 3:

输入:nums = [0,0,0]
输出:[[0,0,0]]
解释:唯一可能的三元组和为 0 。

题解

思路:通过栈的方式统计

class Solution(object):def threeSum(self, nums):""":type nums: List[int]:rtype: List[List[int]]"""# 双指针:i, left. right——>(a,b,c)n = len(nums)result = []nums.sort()for i in range(n):# 如果第一个元素已经大于0,不需要进一步检查if nums[i] > 0:continue# 跳过相同的元素以避免重复(a)if i > 0 and nums[i] == nums[i - 1]:continueleft = i + 1right = n - 1while left < right:sum = nums[i] + nums[left] + nums[right]if sum > 0:right -= 1elif sum < 0:left += 1 else:result.append((nums[i], nums[left], nums[right]))# 跳过相同的元素以避免重复  # 元素bwhile left < right and nums[left] == nums[left + 1]:left += 1# 元素cwhile left < right and nums[right] == nums[right - 1]:right -= 1# 在i的基础上继续left += 1right -= 1return result
http://www.xdnf.cn/news/780121.html

相关文章:

  • 机器学习:集成学习概念、分类、随机森林
  • 24.【.NET8 实战--孢子记账--从单体到微服务--转向微服务】--单体转微服务--认证微服务
  • 使用 C++/OpenCV 图像直方图比较两个图片相似度
  • 奥威BI+AI数据分析:企业数智化转型的加速器
  • Redis 缓存粒度如何控制?缓存整个对象还是部分字段?
  • 三目标微网对经济性进行优化调度
  • Hadoop HDFS 体系结构与文件读写流程剖析
  • 宝塔面板安装nodejs后,通过node -v获取不到版本号,报错node: command not found
  • Qwen与Llama分词器核心差异解析
  • 【RabbitMQ】- Channel和Delivery Tag机制
  • 【mysql】BIGINT UNSIGNED字段被表示为float科学计数法 丢失精度问题
  • 学习路之PHP--easyswoole使用视图和模板
  • MFC Resource.h 文件详解与修改指南
  • nginx+tomcat动静分离、负载均衡
  • JavaScript性能优化实战:从核心原理到工程实践的全流程解析
  • 【大模型:知识图谱】--1.py2neo连接图数据库neo4j
  • Neo4j 数据建模:原理、技术与实践指南
  • Java详解LeetCode 热题 100(25):LeetCode 141. 环形链表(Linked List Cycle)详解
  • JVM—垃圾收集算法和HotSpot算法实现细节
  • Kerberos面试内容整理-Kerberos 的配置与排障
  • 力扣每日一题——分发糖果
  • React Native图片预加载:让你的应用图片预览像德芙一样丝滑
  • 实验设计与分析(第6版,Montgomery著,傅珏生译) 第10章拟合回归模型10.9节思考题10.1 R语言解题
  • Python趣学篇:从零打造智能AI井字棋游戏(Python + Tkinter + Minimax算法)
  • 编译 Linux openssl
  • 黑客利用GitHub现成工具通过DevOps API发起加密货币挖矿攻击
  • C++语法系列之类型转换
  • Catboost算法原理及应用场景
  • 生成对抗网络(GAN)基础原理深度解析:从直观理解到形式化表达
  • C语言学习—数据类型20250603