news 2026/5/15 16:25:41

⭐力扣刷题:三数之和

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
⭐力扣刷题:三数之和

题目:
给你一个整数数组 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 。

解析:
这道题使用双指针法会非常的方便,首先要将数组进行排序,随后开启for循环,i从0的位置开始,设置左指针指向i+1,设置右指针指向数组最后一个元素,然后计算a+b+c的值,如果这三个和的值小于0,那么左指针往右移动,如果三个数之和大于0,右指针往左移动
但是我们需要注意两个点,一个是i要保证得到去重,另外一个就是左指针和右指针指向的元素也是需要去重的

具体代码:

/** * @param {number[]} nums * @return {number[][]} */varthreeSum=function(nums){constres=[]constlen=nums.length nums.sort((a,b)=>a-b)for(leti=0;i<len;i++){letl=i+1letr=len-1iNum=nums[i]if(iNum>0)returnresif(iNum===nums[i-1])continuewhile(l<r){letlNum=nums[l]letrNum=nums[r]letsum=iNum+lNum+rNumif(sum<0)l++elseif(sum>0)r--else{res.push([iNum,lNum,rNum])while(l<r&&nums[l]===nums[l+1]){l++}while(l<r&&nums[r]===nums[r-1]){r--}l++r--}}}returnres};
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/5 6:57:51

R语言采样设计实战精要,环境数据精准采集的关键路径

第一章&#xff1a;环境监测的 R 语言采样设计在环境科学研究中&#xff0c;合理的采样设计是确保数据代表性与分析有效性的关键。R 语言凭借其强大的统计计算和空间分析能力&#xff0c;成为构建科学采样方案的理想工具。通过整合地理信息、环境变量与随机抽样算法&#xff0c…

作者头像 李华
网站建设 2026/5/12 20:08:03

空间转录组的R语言功能富集实战(从零入门到高阶输出)

第一章&#xff1a;空间转录组的R语言功能富集概述 在空间转录组学研究中&#xff0c;功能富集分析是解析基因表达模式与生物学过程关联的核心环节。R语言凭借其强大的统计计算和可视化能力&#xff0c;成为该领域主流的分析工具。通过整合Seurat、SpatialDE、clusterProfiler等…

作者头像 李华
网站建设 2026/5/7 19:18:51

揭秘气候极端事件背后真相:如何用R语言完成高精度归因分析

第一章&#xff1a;揭秘气候极端事件背后真相&#xff1a;如何用R语言完成高精度归因分析在全球变暖背景下&#xff0c;极端气候事件频发&#xff0c;科学界亟需精准方法识别人类活动对气候异常的影响。R语言凭借其强大的统计建模与可视化能力&#xff0c;成为气候归因分析的重…

作者头像 李华
网站建设 2026/5/11 22:32:06

PyCharm的基本使用

PyCharm的使用 在安装好PyCharm后&#xff0c;我们就可以开始写代码啦 创建第一个python项目 打开安装好的pycharm&#xff0c;点击文件&#xff0c;选择新建项目创建好之后就是这样&#xff0c;根据以上方式创建的项目&#xff0c;我们的python所用的库都会使用**.venv**里的内…

作者头像 李华
网站建设 2026/5/13 21:54:28

【Dify工作流并行执行深度解析】:掌握高效自动化引擎的5大核心技巧

第一章&#xff1a;Dify工作流并行执行的核心机制Dify 工作流的并行执行机制基于异步任务调度与节点依赖解析&#xff0c;能够在复杂业务场景中显著提升流程处理效率。其核心在于将工作流拆解为多个可独立运行的节点&#xff0c;并通过事件驱动的方式触发并行任务&#xff0c;确…

作者头像 李华
网站建设 2026/5/12 4:26:18

Docker数据卷挂载实战,彻底解决Agent服务日志丢失与配置漂移问题

第一章&#xff1a;Docker数据卷挂载的核心价值与Agent服务挑战在容器化应用部署中&#xff0c;数据持久化和配置动态管理是关键挑战。Docker数据卷挂载机制为容器提供了独立于生命周期的存储能力&#xff0c;确保关键数据不随容器销毁而丢失&#xff0c;同时支持跨容器共享与主…

作者头像 李华