6 三数之和
给你一个整数数组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 。思路1、判断参数的合法性。2、给数组排序计算数组长度。3、开始第一层循环定义为i从0循环到数组末尾。相同的元素每一层只能循环一次即判断i不等于0时nums[i]等于nums[i-1]就跳过这一次循环continue4、初始化第三层的移动指针kk指向数组的末尾nums.size()-1;5、进入第二层循环j从i1循环到数组末尾。同样相同的元素每一层只能循环一次判断j不等于i1时nums[j]等于nums[j-1]就跳过这一次循环continue6、进入第三层循环第三层循环从末尾开始由于第二层循环数字是越来越大的第三层移动指针应该越来越小。7、核心判断与结果收集在第三层循环中当j k时计算当前三元组的和sum nums[i] nums[j] nums[k]。如果sum 0说明找到了一个有效三元组。此时将[nums[i], nums[j], nums[k]]加入结果列表。随后需要移动指针以寻找其他可能的组合同时避免重复将j向右移动一位j并跳过所有与nums[j]相同的值直到遇到不同的元素以确保下一轮第二层循环的值是新的。同时将k向左移动一位k--并跳过所有与nums[k]相同的值直到遇到不同的元素。这一步是双指针收缩的关键它保证了在找到一组解后能高效地继续探索剩余空间。如果sum 0说明当前和偏小。由于数组已排序增大和的最直接方式是增大j即第二层循环的值。因此将j向右移动一位j。如果sum 0说明当前和偏大。减小和的最直接方式是减小k即第三层指针的值。因此将k向左移动一位k--。循环的终止条件是j k不再满足。当j与k相遇或交错时对于当前固定的i所有以nums[j]和nums[k]为组合的可能性都已探索完毕。此时第二层循环j会进入下一次迭代或者第一层循环i进入下一个值重复上述过程直到遍历完所有不重复的i。class Solution { public: vectorvectorint threeSum(vectorint nums) { int nnums.size(); if(n3) return {}; vectorvectorint ans; std::sort(nums.begin(),nums.end()); for(int i0;in;i){ if(i!0nums[i]nums[i-1]) continue; int kn-1; for(int ji1;jn;j){ if(j!i1nums[j]nums[j-1]) continue; while(kj){ if(nums[i]nums[j]nums[k]0) k--; else break; } if(nums[i]nums[j]nums[k]0j!k){ ans.push_back({nums[i],nums[j],nums[k]}); } } } return ans; } };

相关新闻

Point-E:基于扩散模型的3D点云生成系统技术解析

Point-E:基于扩散模型的3D点云生成系统技术解析

Point-E:基于扩散模型的3D点云生成系统技术解析 【免费下载链接】point-e Point cloud diffusion for 3D model synthesis 项目地址: https://gitcode.com/gh_mirrors/po/point-e Point-E是一个基于扩散模型的开源3D点云生成系统,能够从图像或文本…

2026/7/19 18:26:07 阅读更多 →
4 移动0

4 移动0

给定一个数组 nums,编写一个函数将所有 0 移动到数组的末尾,同时保持非零元素的相对顺序。请注意 ,必须在不复制数组的情况下原地对数组进行操作。示例 1:输入: nums [0,1,0,3,12] 输出: [1,3,12,0,0]示例 2:输入: nums [0] 输出: [0]提示:…

2026/7/19 18:26:07 阅读更多 →
基于SSM甜品蛋糕购物系统的设计

基于SSM甜品蛋糕购物系统的设计

摘 要 移动互联网技术迅速发展,电子商务不断更新,甜品零售业正发生着剧烈的变化,即数字化转型。根据中小型烘焙店实际的业务需要,本文设计出适合于烘焙和蛋糕销售的信息化管理系统。 本系统使用前后端分离的思想,用B…

2026/7/19 18:25:07 阅读更多 →

最新新闻

Jenkins+Maven+Git自动化部署实战:从零搭建CI/CD流水线

Jenkins+Maven+Git自动化部署实战:从零搭建CI/CD流水线

在持续集成与持续交付(CI/CD)的实践中,Jenkins 作为自动化引擎,配合 Maven 进行项目构建,以及 Git 进行版本控制,构成了 Java 后端项目自动化部署的黄金三角。这套组合拳能显著提升开发效率、保障构建一致性…

2026/7/20 21:50:23 阅读更多 →
UE GameplayCue自动关联:插件资源路径配置与映射原理详解

UE GameplayCue自动关联:插件资源路径配置与映射原理详解

1. 项目概述:GameplayCue自动关联的价值与痛点在Unreal Engine(UE)中构建复杂的游戏玩法系统,尤其是基于Gameplay Ability System(GAS)框架时,GameplayCue是一个绕不开的核心概念。它负责处理那…

2026/7/20 21:50:23 阅读更多 →
LLM应用开发:LangChain与低代码平台技术选型指南

LLM应用开发:LangChain与低代码平台技术选型指南

1. 技术选型背景与核心挑战在LLM应用开发领域,技术选型正面临前所未有的复杂性。当前市场上存在两种截然不同的技术路线:以LangChain/LangGraph为代表的高代码编程路线,以及以Dify/Coze为代表的低代码可视化路线。这种分化类似于传统软件开发…

2026/7/20 21:50:23 阅读更多 →
MCP+Google ADK:轻量级系统扩展方法论

MCP+Google ADK:轻量级系统扩展方法论

1. 项目概述:这不是又一个“AI集成指南”,而是一套可落地的系统扩展方法论你有没有遇到过这样的情况:手头有个挺不错的内部工具,用着顺手,但一旦用户从50人涨到500人,响应就开始卡顿;或者刚上线…

2026/7/20 21:50:23 阅读更多 →
业务愿不愿意用,才是AI+BI选型的第一性指标:产品VP的PoC清单

业务愿不愿意用,才是AI+BI选型的第一性指标:产品VP的PoC清单

导语 评估AIBI产品时,最常见的失误不是选错了功能,而是选错了评价维度。功能清单可以列到上百项,Demo可以打磨得无懈可击,招标分数也可以算到小数点后两位——但项目上线三个月后,真正决定这套系统ROI的,往…

2026/7/20 21:50:23 阅读更多 →
NTC、TEC、RTC——容易搞混的三个缩写

NTC、TEC、RTC——容易搞混的三个缩写

一句话: 三个东西缩写只差一个字母但功能完全无关——NTC 测温、TEC 制冷、RTC 记时间。本文用一张表讲清楚。适合谁读:被这三个缩写绕晕的嵌入式初学者。一张表分清楚 NTCTECRTC全称Negative Temperature CoefficientThermo Electric CoolerReal Time Clock做什么测…

2026/7/20 21:49:22 阅读更多 →

日新闻

2026 WAIC:努比亚二代“豆包手机”NaviX Ultra亮相,智能体验全面升级!

2026 WAIC:努比亚二代“豆包手机”NaviX Ultra亮相,智能体验全面升级!

7月18日智东西消息,在2026 WAIC期间,努比亚联合字节豆包打造的二代“豆包手机”努比亚NaviX Ultra首次亮相,相比一代有诸多升级。智能体手机理念中兴通讯终端事业部总裁、努比亚总裁倪飞表示,智能体手机要从人操作手机变为手机帮人…

2026/7/20 0:00:34 阅读更多 →
努比亚NaviX Ultra亮相WAIC,智能体手机能否让用户生活更简单?

努比亚NaviX Ultra亮相WAIC,智能体手机能否让用户生活更简单?

努比亚NaviX Ultra:外观与功能双升级在2026 WAIC期间,首次亮相的努比亚NaviX Ultra吸引了众多目光。它是努比亚联合字节豆包打造的二代“豆包手机”,与一代努比亚M153相比,外观设计变化较大。其机身背部搭载横向排布的大尺寸影像模…

2026/7/20 0:00:34 阅读更多 →
C# 将逗号分割的字符串转换为long,并添加到List<long>

C# 将逗号分割的字符串转换为long,并添加到List<long>

目录 方法1:使用Split和Convert.ToInt64 方法2:使用LINQ的Select和ToList 方法3:使用TryParse进行异常安全转换(推荐) 如果您喜欢此文章,请收藏、点赞、评论,谢谢,祝您快乐每一天…

2026/7/20 0:00:34 阅读更多 →

周新闻

Go语言静态资源打包方案对比与实践指南

Go语言静态资源打包方案对比与实践指南

1. 项目背景与核心需求在Go语言开发中,我们经常需要处理静态资源文件的打包问题。无论是Web应用的模板文件、前端资源,还是配置文件、证书等,都需要随程序一起分发。传统做法是将这些文件与编译后的二进制文件放在同一目录下,但这…

2026/7/20 5:57:49 阅读更多 →
Go语言实现高性能LDAP认证服务的架构与实践

Go语言实现高性能LDAP认证服务的架构与实践

1. 项目背景与核心价值LDAP(轻量级目录访问协议)作为企业级身份认证的黄金标准,已经服务了超过80%的财富500强公司。我在金融科技领域实施统一认证体系时,发现传统Java方案存在启动慢、内存占用高等痛点。而Go语言凭借其协程并发模…

2026/7/20 4:31:26 阅读更多 →
【AI面试官实战指南】:用ChatGPT模拟10类高频技术岗面试,3天提升应答精准度92%

【AI面试官实战指南】:用ChatGPT模拟10类高频技术岗面试,3天提升应答精准度92%

更多请点击: https://intelliparadigm.com 第一章:AI面试官实战指南的核心价值与适用场景 AI面试官并非替代人类HR的“黑箱工具”,而是以可解释、可审计、可迭代的方式,赋能招聘全链路的关键基础设施。其核心价值在于将主观经验沉…

2026/7/20 5:56:42 阅读更多 →

月新闻