【暴刷力扣】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 。

提示:

3 <= nums.length <= 3000
-105 <= nums[i] <= 105

代码

/*** @param {number[]} nums* @return {number[][]}*/
var threeSum = function(nums) {const quickSort = (l, r) => {if (l >= r) {return}let mid = nums[l + r >> 1], left = l - 1, right = r + 1while(left < right) {do {left ++} while (nums[left] < mid)do {right --} while (nums[right] > mid)if (left < right) {[nums[left], nums[right]] = [nums[right], nums[left]]}}quickSort(l, right)quickSort(right + 1, r)}quickSort(0, nums.length - 1)const res =[]for (let i = 0; i < nums.length - 2; ) {// 这里很妙,考虑下 -1 -1 0 1 的情况,如果是 +1, 那么left就永远不可能指向-1while(nums[i] === nums[i - 1]) i ++ for (let left = i + 1, right = nums.length - 1; left < right; ) {const sum = nums[left] + nums[right] + nums[i]if (sum < 0) {left ++} else if (sum > 0) {right --} else {while (nums[left] === nums[left + 1]) left ++while (nums[right] === nums[right - 1]) right --res.push([nums[i], nums[left], nums[right]])left ++right --}}i ++}return res
};

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/766874.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

xilinx的高速接口构成原理和连接结构

本文来源&#xff1a; V3学院 尤老师的培训班笔记【高速收发器】xilinx高速收发器学习记录Xilinx-7Series-FPGA高速收发器使用学习—概述与参考时钟GT Transceiver的总体架构梳理 文章目录 一、概述&#xff1a;二、高速收发器结构&#xff1a;2.1 QUAD2.1.1 时钟2.1.2 CHANNEL…

【阅读论文】When Large Language Models Meet Vector Databases: A Survey

摘要 本调查探讨了大型语言模型&#xff08;LLM&#xff09;和向量数据库&#xff08;VecDB&#xff09;之间的协同潜力&#xff0c;这是一个新兴但迅速发展的研究领域。随着LLM的广泛应用&#xff0c;出现了许多挑战&#xff0c;包括产生虚构内容、知识过时、商业应用成本高昂…

【Godot4.2】基础知识 - Godot中的2D向量

概述 在Godot中&#xff0c;乃至一切游戏编程中&#xff0c;你应该都躲不开向量。这是每一个初学者都应该知道和掌握的内容&#xff0c;否则你将很难理解和实现某些其实原理非常简单的东西。 估计很多刚入坑Godot的小伙伴和我一样&#xff0c;不一定是计算机专业或编程相关专…

利用sealos安装k8s集群

1. 环境准备 准备三台干净&#xff08;未安装过k8s环境&#xff09;的虚拟机 # 所有的主机都要配置主机名和域名映射 # 设置主机名 hostnamectl set-hostname k8s-master01 # vim /etc/hosts 192.168.59.201 k8s-master01 192.168.59.202 k8s-worker01 192.168.59.203 k8…

基于ssm停车场管理系统(程序+文档+数据库)

** &#x1f345;点赞收藏关注 → 私信领取本源代码、数据库&#x1f345; 本人在Java毕业设计领域有多年的经验&#xff0c;陆续会更新更多优质的Java实战项目&#xff0c;希望你能有所收获&#xff0c;少走一些弯路。&#x1f345;关注我不迷路&#x1f345;** 一、项目概述…

腾讯云GPU云服务器_并行计算_弹性计算_AI_深度学习

腾讯云GPU服务器是提供GPU算力的弹性计算服务&#xff0c;腾讯云GPU服务器具有超强的并行计算能力&#xff0c;可用于深度学习训练、科学计算、图形图像处理、视频编解码等场景&#xff0c;腾讯云百科txybk.com整理腾讯云GPU服务器租用价格表、GPU实例优势、GPU解决方案、GPU软…

java数据结构与算法基础-----字符串------正则表达式的练习案例---持续补充中

java数据结构与算法刷题目录&#xff08;剑指Offer、LeetCode、ACM&#xff09;-----主目录-----持续更新(进不去说明我没写完)&#xff1a;https://blog.csdn.net/grd_java/article/details/123063846 正则表达式基础&#xff1a;https://blog.csdn.net/grd_java/article/det…

【学不动系列】lint-staged 使用教程

lint-staged 使用教程 lint-staged 是一个在git暂存文件上运行linters的工具&#xff0c;当然如果你觉得每次修改一个文件就给所有文件执行一次lint检查不恶心的话&#xff0c;这个工具对你来说就没有什么意义了&#xff0c;请直接关闭即可。 npx mrm lint-staged它将根据pac…

xercesc库中文保存XML功能实现

目录 一 参考链接 二 运行结果 三 代码 一 参考链接 DOM Programming Guide (apache.org) Xerces-c DOM XML文件的构造_xerces-c domimplementation-CSDN博客 Xerces-c库的使用-CSDN博客 二 运行结果 三 代码 #if 1//参考链接&#xff1a; https://blog.csdn.net/RGBMa…

容器podman

容器 Linux中的容器是什么 装载应用的存在容器就是将软件打包成标准化单元, 用于开发,交付和部署容器技术已经称为应用程序封装和交付的核心技术 容器的优缺点 优点 相比床同的虚拟化技术, 容器更加简洁高效传统虚拟机需要给每个VN安装操作系统容器是的共享公共库和程序 缺点…

网页有效防止XSS,SQL注入,木马文件拦截上传等安全问题

网络安全问题一直是备受关注的话题&#xff0c;其中跨站脚本攻击&#xff08;XSS&#xff09;、SQL注入和木马文件上传是常见的安全威胁。下面我将详细介绍这些安全问题。 首先是跨站脚本攻击&#xff08;XSS&#xff09;。XSS攻击是一种利用网站漏洞&#xff0c;将恶意脚本注…

2020年黑龙江省水稻种植分布数据

黑龙江省&#xff0c;位于中国最东北部&#xff0c;是我国位置最北、最东&#xff0c;纬度最高&#xff0c;经度最东的省份&#xff0c;气候为温带大陆性季风气候。黑龙江省土地总面积为47.3万平方公里&#xff08;含加格达奇和松岭区&#xff09;&#xff0c;占全国土地总面积…

LeetCode第一天(485.最大连续1的个数)

官解&#xff1a; 为了得到数组中最大连续 111 的个数&#xff0c;需要遍历数组&#xff0c;并记录最大的连续 111 的个数和当前的连续 111 的个数。如果当前元素是 111&#xff0c;则将当前的连续 111 的个数加 111&#xff0c;否则&#xff0c;使用之前的连续 111 的个数更新…

HTML元素语义化补充之css函数(三)

文章目录 CSS中的函数css函数–varcss函数–calccss函数–blurcss函数–gradientlinear-gradient的使用 CSS中的函数 ◼ 在前面我们有使用过很多个CSS函数: 比如rgb/rgba/translate/rotate/scale等; CSS函数通常可以帮助我们更加灵活的来编写样式的值&#xff1b; ◼ 下面有几…

Nature:“量子龙卷风”首次模拟黑洞

科学家们在超流体氦气中首次创造出了一个巨大的“量子漩涡”&#xff08;quantum vortex&#xff09;&#xff0c;用以模拟黑洞。这一成就不仅使他们能够更加细致地观察模拟黑洞的行为&#xff0c;还能探究其与周围环境的交互作用。 诺丁汉大学的研究团队与伦敦国王学院和纽卡斯…

春天到了,颈椎病容易复发和加重,怎么回事?

即将进入四月&#xff0c;气温回暖&#xff0c;大家的着装明显轻便了。实际上&#xff0c;四时之气均有诱发颈椎病复发的因素&#xff0c;春天也不例外。 对于颈椎病人群来说&#xff0c;他们的颈部状态较差&#xff0c;遇到“无孔不入”、挟裹着湿气的风邪&#xff0c;便十分容…

操作系统原理-模拟进程创建、终止、阻塞、唤醒原语——沐雨先生

一、实验题目&#xff1a; 模拟进程创建、终止、阻塞、唤醒原语 二、实验目的&#xff1a; 通过设计并调试创建、终止、阻塞、唤醒原语功能&#xff0c;有助于对操作系统中进程控制功能的理解&#xff0c;掌握操作系统模块的设计方法和工作原理。 三、实验环境&#xff1a; …

【算法分析与设计】翻转二叉树

题目 给你一棵二叉树的根节点 root &#xff0c;翻转这棵二叉树&#xff0c;并返回其根节点。 示例 示例 1&#xff1a; 输入&#xff1a;root [4,2,7,1,3,6,9] 输出&#xff1a;[4,7,2,9,6,3,1]示例 2&#xff1a; 输入&#xff1a;root [2,1,3] 输出&#xff1a;[2,3,1]示例…

本地运行环境工具UPUPWANK(win)和Navicat数据库管理工具

UPUPWANK安装地址&#xff1a;https://www.upupw.net 1.进入UPUPWANK后点击一键开启 2.新增项目 这里请千万注意80端口&#xff0c;如果80端口被占用了&#xff0c;请记住去任务管理器关闭占用80端口的进程。不然就不会成功显示。&#xff08;笔者含泪警告&#xff0c;一晚上的…

多线程应用中的性能优化:创建合适的线程数

多线程应用中的性能优化&#xff1a;创建合适的线程数 在多线程应用中&#xff0c;为了降低延迟和提高吞吐量&#xff0c;我们可以采取两种主要策略&#xff1a;优化算法或者充分利用硬件性能。要发挥硬件的极致性能&#xff0c;就需要使用多线程来提高CPU或I/O的利用率。 由于…