【LeetCode】【算法】15. 三数之和
LeetCode 15. 三数之和
题目描述
给你一个整数数组 nums ,判断是否存在三元组 [nums[i], nums[j], nums[k]] 满足 i != j、i != k 且 j != k ,同时还满足 nums[i] + nums[j] + nums[k] == 0 。请你返回所有和为 0 且不重复的三元组。
注意:答案中不可以包含重复的三元组。
思路
思路:首先可以对数组做排序Arrays.sort(nums),便于寻找合适的解
- 遍历三个数即可。遍历技巧为:
I. for循环,定义i=0,遍历第一个数
II.left=i+1作为第二个数,right=nums.length-1作为第三个数 - while (left < right)不断循环,分为三种条件逼近结果,实际上
left和right就类似于双指针:
I.if ((nums[i]+nums[left]+nums[right]) > 0){right--;}// 右侧逼近
II.else if ((nums[i]+nums[left]+nums[right]) < 0) {left++;}// 左侧逼近
III.else 保存解,同时在else中,对于重复数也可以用两个while循环去除,避免重复遍历添加重复结果
代码
class Solution {public List<List<Integer>> threeSum(int[] nums) {List<List<Integer>> list = new ArrayList<>();// 数组排序Arrays.sort(nums);if (nums[0] > 0) return list;for (int i = 0; i < nums.length; i++) {if (i > 0 && nums[i] == nums[i-1]){continue;}int left = i + 1;int right = nums.length - 1;while (left < right){if ((nums[i] + nums[left] + nums[right]) > 0){right--;} else if ((nums[i] + nums[left] + nums[right]) < 0){left++;} else {// 可以进行存储了,但是要注意去重List<Integer> t = new ArrayList<>();t.add(nums[i]);t.add(nums[left]);t.add(nums[right]);list.add(t);while (right > left && nums[right] == nums[right - 1]) right--;while (right > left && nums[left] == nums[left + 1]) left++;right--;left++;}}}return list;}
}
相关文章:
【LeetCode】【算法】15. 三数之和
LeetCode 15. 三数之和 题目描述 给你一个整数数组 nums ,判断是否存在三元组 [nums[i], nums[j], nums[k]] 满足 i ! j、i ! k 且 j ! k ,同时还满足 nums[i] nums[j] nums[k] 0 。请你返回所有和为 0 且不重复的三元组。 注意:答案中不…...
传输协议设计与牧村摆动(Makimoto‘s Wave)
有一条活鱼和一条死鱼,你准备怎么做,你会将活鱼红烧或将死鱼清蒸吗?好的食材只需要最简单的烹饪,不好的食材才需要花活儿。 我此前的文字几乎都在阐述一个观点,广域网就是那条死鱼,数据中心则是那条活鱼。…...
JMeter进阶篇
目录 上篇导航: 总目录: 一、逻辑控制器: 1.逻辑控制器和关联: 2.if逻辑控制器: 3.forEach控制器: 4.循环控制器: 二、关联: 1.xpath: 2.正则表达式提取器&…...
LabVIEW编程基础教学(一)--介绍
LabVIEW(Laboratory Virtual Instrument Engineering Workbench)是一种基于图形化编程的开发环境,专为工程应用、测试、测量、控制系统等设计。与传统的文本编程语言不同,LabVIEW 使用图形化的方式通过“数据流”模型来表示程序逻…...
HVV蓝队基础
免责声明 学习视频来自B 站up主泷羽sec,如涉及侵权马上删除文章。 笔记的只是方便各位师傅学习知识,以下代码、网站只涉及学习内容,其他的都与本人无关,切莫逾越法律红线,否则后果自负。 企业网络架构 企业技术和信…...
[运维][Nginx]Nginx学习(1/5)--Nginx基础
Nginx简介 背景介绍 Nginx一个具有高性能的【HTTP】和【反向代理】的【WEB服务器】,同时也是一个【POP3/SMTP/IMAP代理服务器】,是由伊戈尔赛索耶夫(俄罗斯人)使用C语言编写的,Nginx的第一个版本是2004年10月4号发布的0.1.0版本。另外值得一…...
创客节小学组C++模拟题
来源:加码未来2024年深圳罗湖区创客节模拟题(小学组) 第一题 题目描述 给你n个数,找出出现次数超过一半的数。题目保证这样的数一定存在。 输入格式 第一行一个整数n,(n<=1000) 第二行n个整数(<1000000) 输出格式 输出一个整数 样例输入 5 1 2 3 3 3 样例输…...
阿里云ECS服务器使用限制及不允许做的事情
阿里云ECS(Elastic Compute Service)是一种高性能的弹性计算服务,允许用户在云端创建和管理虚拟服务器。尽管ECS提供了强大的功能,但在使用过程中,阿里云有一些限制和不允许的行为。以下是一些主要的使用限制和禁止行为…...
Linux开发讲课49--- Linux 启动过程分析
理解运转良好的系统对于处理不可避免的故障是最好的准备。 启动过程非常简单。内核在单核上以单线程和同步状态启动,似乎可以理解。但内核本身是如何启动的呢?initrd(initial ramdisk) 和引导程序(bootloader)具有哪些功能&#…...
Java-03
目录 算法 1.小美的因子查询 2.小美的密码 3.小美的数组删除 4.小美和大富翁 知识点 InnoDB中的行级锁是怎么实现的? 介绍一下Java中的IO流 讲讲Java的跨平台原理 COUNT(1)与COUNT(*)区别 Redis 为什么要用…...
微积分复习笔记 Calculus Volume 1 - 5.3 The Fundamental Theorem of Calculus
5.3 The Fundamental Theorem of Calculus - Calculus Volume 1 | OpenStax...
c++如何绑定一个类与类内成员的关系
在 C 中,成员函数和成员变量的归属关系(即某个成员属于哪个类)是通过编译器的多种机制和语言特性来实现和管理的。理解这些机制有助于更深入地掌握 C 的面向对象特性、内存管理以及编译过程。以下是 C 如何确定某个成员函数或成员变量属于特定…...
关于解决使用VMWare内的虚拟机无法识别USB问题小结
目录 前言 0. 查看是不是没有开启USB3.0的支持 1. 检查一下是否禁用了VMWare USB服务 2. 无奈之举 前言 笔者今天帮助一位同志解决了VMWare内的虚拟机不识别挂载设备的办法。这里对笔者使用的排查手段做一个总结。 0. 查看是不是没有开启USB3.0的支持 我们的第一件事情就…...
抢抓5G机遇,AORO A23防爆手机如何直击园区巡检挑战?
矗立在沙漠高原的铁塔,遍布都市的电线网络,远离郊区的海港油田……大型园区对智能巡检提出了新的需求,选择一款智能且高效的巡检设备,以确保园区高效运营,成为了管理者关注的重点。在调研多个智慧园区后,小…...
索引【MySQL】
文章目录 聚簇索引 VS 非聚簇索引索引MySQL与磁盘交互的基本单位主键索引索引操作唯一索引的创建普通索引的创建复合索引 索引创建原则 聚簇索引 VS 非聚簇索引 MyISAM存储引擎 - 主键索引结构 MyISAM存储引擎同样采用B树作为索引的基本数据结构 与InnoDB存储引擎的B树不同的…...
【Allure】mac下环境配置
安装 1.Mac 可以使用 brew 安装 allure,安装命令如下 brew install allure 2.与 pytest 结合需要安装 allure-pytest 插件: pip install allure-pytest3.查看allure版本 allure --version...
Android 开启混淆R8编译问题处理
Android R8是一个代码混淆和压缩工具,可以将应用程序的大小和安全性优化。它引入了一些新功能,如成员内省、混淆指针、类内省等。 但R8使用起来一直不友好,因为自从使用R8之后编译问题不断。主要还是和混淆相关,经常报错ÿ…...
Rust:GUI 开源框架
Rust的GUI代码包有多个选择,每个都有其独特的特点和优势。以下是一些比较受欢迎的Rust GUI库,以及它们的主要特点和适用场景: KAS GUI: 特点:基于Rust语言开发的状态化图形用户界面(GUI)框架&am…...
移远通信亮相骁龙AI PC生态科技日,以领先的5G及Wi-Fi产品革新PC用户体验
PC作为人们学习、办公、娱乐的重要工具,已经深度融入我们的工作和生活。随着物联网技术的快速发展,以及人们对PC性能要求的逐步提高,AI PC成为了行业发展的重要趋势。 11月7-8日,骁龙AI PC生态科技日在深圳举办。作为高通骁龙的重…...
力扣每日一题 3258. 统计满足 K 约束的子字符串数量 I
给你一个 二进制 字符串 s 和一个整数 k。 如果一个 二进制字符串 满足以下任一条件,则认为该字符串满足 k 约束: 字符串中 0 的数量最多为 k。字符串中 1 的数量最多为 k。 返回一个整数,表示 s 的所有满足 k 约束 的子字符串的数量。 如…...
C标准库缓冲区溢出问题与安全编程实践
1. C标准库缓冲区溢出问题概述缓冲区溢出是C语言开发中最常见的安全漏洞之一。作为一名有十年经验的嵌入式开发者,我见过太多由于不当使用标准库函数导致的崩溃和安全问题。缓冲区溢出通常发生在程序向固定大小的缓冲区写入超过其容量的数据时,多余的数据…...
AI模型评估指标:InstantID在各项基准测试中的表现
AI模型评估指标:InstantID在各项基准测试中的表现 【免费下载链接】InstantID 项目地址: https://ai.gitcode.com/hf_mirrors/InstantX/InstantID InstantID作为一款领先的AI模型,在多项基准测试中展现出卓越性能。本文将深入解析其在各项评估指…...
数据库运维与数据安全:备份恢复、日志分析与故障排查
下面的内容大家根据实际情况,公司的业务还有重点择机选择,不是所有的蓝翔都有挖掘机 如果说之前的索引优化是“飙车”,那么今天的主题就是“系安全带”和“买保险”。 在运维的世界里,没有“如果”,只有“万一”。当…...
漫画脸描述生成企业级安全方案:私有化部署保障原创角色数据不出域
漫画脸描述生成企业级安全方案:私有化部署保障原创角色数据不出域 1. 项目背景与核心价值 在二次元创作领域,角色设计是核心创作环节。传统的角色设计需要专业画师投入大量时间,从概念设计到细节刻画都需要反复修改。随着AI技术的发展&…...
LeetCode 热题100——128.最长连续序列
题目:给定一个未排序的整数数组 nums ,找出数字连续的最长序列(不要求序列元素在原数组中连续)的长度。请你设计并实现时间复杂度为 O(n) 的算法解决此问题。示例 1:输入:nums [100,4,200,1,3,2] 输出&…...
C++ 性能评测工程:基于 Google Benchmark 的 C++ 函数级性能基准测试方法论
各位技术同仁,下午好!今天,我们将深入探讨一个在C开发中至关重要的话题:C 函数级性能基准测试。尤其是在追求极致性能的C世界里,仅仅依靠经验和直觉来优化代码是远远不够的。我们需要一套科学、严谨的方法论来量化和评…...
2026降AIGC率工具实测:10款好用工具推荐(论文AI痕迹重必看)
临近毕业季,不少同学都在为论文的AIGC检测头疼:明明是自己写的内容,却被判定为AI生成?用AI搭了初稿,怎么改都消不掉机器痕迹?到底有没有靠谱的降AI率工具能真正解决问题? 今天我就给大家整理了1…...
League-Toolkit:颠覆式英雄联盟客户端增强工具的全攻略
League-Toolkit:颠覆式英雄联盟客户端增强工具的全攻略 【免费下载链接】League-Toolkit An all-in-one toolkit for LeagueClient. Gathering power 🚀. 项目地址: https://gitcode.com/gh_mirrors/le/League-Toolkit League-Toolkit是一款基于官…...
数组运算18题:从递归求和解到Kadane算法
1. 数组运算进阶指南:18道经典题目深度解析数组作为最基本的数据结构,在编程面试和实际开发中无处不在。掌握数组的各种运算技巧不仅能帮助你在面试中脱颖而出,更能提升日常编码的效率和质量。本文将深入解析18个经典的数组运算题目ÿ…...
Ant Design X:AI赋能前端开发的革命性工具
1. Ant Design X:当设计系统遇上AI会发生什么? 第一次听说Ant Design X时,我正在为一个电商项目焦头烂额地调试聊天机器人组件。传统方案需要自己对接NLP服务、处理对话状态、设计交互逻辑...直到同事扔给我一个链接:"试试这…...
