【LeetCode-中等题】15. 三数之和

题目

在这里插入图片描述

题解一:双指针法

图解参考链接:画解算法:15. 三数之和
在这里插入图片描述
详解参考代码随想录讲的非常好
梦破碎的地方!| LeetCode:15.三数之和

代码:

class Solution {public List<List<Integer>> threeSum(int[] nums) {List<List<Integer>> ans = new ArrayList<>();//定义最后存放三元组的list集合if(nums.length<3||nums == null)  return ans;//若数组元素个数小于3或为空,直接返回空集合Arrays.sort(nums);//对数组进行排序//循环数组,拿出每一个元素当做a              a+b+c = 0;for(int i=0;i<nums.length;i++){if(nums[i]>0) break; // 因为是排序好的数组,如果当前数字大于0,则三数之和一定大于0,所以结束循环 if(i>0&&nums[i]==nums[i-1]) continue;  //给每个相同的nums元素去重,不然会有重复的三元组的int left = i+1;//左指针  相当于bint right = nums.length -1;//右指针  相当于cwhile(left<right){//为什么条件不是left<=right  ,因为如果设置等于了,//那么如果在相等的情况下构成了三元组,其实right和left是同一个数,肯定不行。int sum = nums[i] + nums[right] + nums[left];//计算abc的值是否为0 if(sum>0)  right--;  //如果sum大于0代表,需要缩小sun的值,那么只能通过把大值调小,才能更加靠近0else if(sum<0) left++;//同理else if(sum == 0){//满足条件List<Integer> list = Arrays.asList(nums[i],nums[left],nums[right]);//将满足条件的三个元素加入到list集合中ans.add(list);//把满足条件的三元组加入到最后的三元组大集合中//对right  和  left的去重   -1    -1      -1      0       1      2      2         三元组 -1 -1   2//                        nums  left                                  right//                          -1    -1      -1      0       1      2      2//                         nums          left                  right             三元组 -1  -1   2while(left < right&&nums[left] == nums[left + 1])  left++;while(left < right&&nums[right] == nums[right - 1]) right--;left++;right--;}}}return ans;}
}

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

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

相关文章

Codeforces Round 893 (Div. 2) A ~ C

比赛链接 A. Buttons 博弈、最优策略一定是先去按都能按的按钮&#xff0c;按完之后再按自己的。 #include<bits/stdc.h> #define IOS ios::sync_with_stdio(0);cin.tie(0);cout.tie(0); #define endl \nusing namespace std;typedef pair<int, int> PII; typede…

Python使用OpenCV库对彩色图像进行通道分离

目录 1、解释说明&#xff1a; 2、使用示例&#xff1a; 3、注意事项&#xff1a; 1、解释说明&#xff1a; 在Python中&#xff0c;我们可以使用OpenCV库对彩色图像进行通道分离。通道分离是将彩色图像的每个像素分解为三个通道&#xff08;红、绿、蓝&#xff09;的过程。…

.eslintrc配置

ESLint 标准规则 /*** AlloyTeam ESLint 规则** 包含所有 ESLint 规则* 使用 babel-eslint 作为解析器** fixable 表示此配置支持 --fix* off 表示此配置被关闭了&#xff0c;并且后面说明了关闭的原因*/module.exports {parser: babel-eslint,parserOptions: {ecmaVersion: 2…

jstack(Stack Trace for Java)Java堆栈跟踪工具

jstack&#xff08;Stack Trace for Java&#xff09;Java堆栈跟踪工具 jstack&#xff08;Stack Trace for Java&#xff09;命令用于生成虚拟机当前时刻的线程快照&#xff08;一般称为threaddump或者javacore文件&#xff09;。 线程快照就是当前虚拟机内每一条线程正在执…

Android 应用冷启动优化

冷启动相关概念 应用启动概念 冷启动&#xff1a;首次打开app或者app彻底销毁后再次打开app&#xff08;开关机后&#xff09;&#xff0c;这也是我们进行启动速度优化的主要方向。热启动&#xff1a;应用运行中按home键再打开应用。温启动&#xff1a;介于两者之间&#xff…

动手学深度学习-pytorch版本(二):线性神经网络

参考引用 动手学深度学习 1. 线性神经网络 神经网络的整个训练过程&#xff0c;包括: 定义简单的神经网络架构、数据处理、指定损失函数和如何训练模型。经典统计学习技术中的线性回归和 softmax 回归可以视为线性神经网络 1.1 线性回归 回归 (regression) 是能为一个或多个…

Linux系统的目录结构

file system hierarchy standard文件系统层级标准&#xff0c;定义了在类Unix系统中的目录结构和目录内容。 即让用户了解到已安装软件通常放置于哪个目录下。 Linux目录结构的特点 使用树形目录结构来组织和管理文件。 整个系统只有一个根目录&#xff08;树根&#xff09;&a…

【SA8295P 源码分析】51 - QNX NFS Server + Android NFS Client 完整配置

【SA8295P 源码分析】51 - QNX NFS Server + Android NFS Client 完整配置 一、QNX 侧 NFS Server 修改:ip 为 192.168.118.21.1 配置拷贝 nfsd、rpcbind 到 /mnt 目录下1.2 配置 exports1.3 为NFS 共享目录挂载镜像1.4 修 startup.sh 开机自启动 nfsd Server1.5 关闭 QNX 防火…

记录几个Hudi Flink使用问题及解决方法

前言 如题&#xff0c;记录几个Hudi Flink使用问题&#xff0c;学习和使用Hudi Flink有一段时间&#xff0c;虽然目前用的还不够深入&#xff0c;但是目前也遇到了几个问题&#xff0c;现在将遇到的这几个问题以及解决方式记录一下 版本 Flink 1.15.4Hudi 0.13.0 流写 流写…

docker redis 配置文件样例

文章目录 1. redis的配置文件1.1 chatGPT 写的配置样例及坑点。 2. docker-compose.yml 文件 1. redis的配置文件 redis官方的配置文件样例 非常有用&#xff0c; 都是从官方文档过摘过来的 1.1 chatGPT 写的配置样例及坑点。 #以下配置来自 chatGPT # 设置 Redis 绑定的 IP…

Flink之时间语义

Flink之时间语义 简介 Flink中时间语义可以说是最重要的一个概念了,这里就说一下关于时间语义的机制,我们下看一下下面的表格,简单了解一下 时间定义processing time处理时间,也就是现实世界的时间,或者说代码执行时,服务器的时间event time事件时间,就是事件数据中所带的时…

DataWhale夏令营第三期-CV赛道-第二次打卡

脑部PET比赛 第二次打卡 运行cnn Baseline时第一段代码报错 FutureWarning: RandomContrast has been deprecated. Please use RandomBrightnessContrast warnings.warn( 根据报错信息新版本的RandomContrast已经弃用&#xff0c;改为RandomBrightnessContrast方法即可。 从这…

nginx代理webSocket链接响应403

一、场景 使用nginx代理webSocket链接&#xff0c;nginx响应403 1、nginx访问日志响应403 [18/Aug/2023:09:56:36 0800] "GET /FS_WEB_ASS/webim_api/socket/message HTTP/1.1" 403 5 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit…

【数据结构】循环队列

&#x1f490; &#x1f338; &#x1f337; &#x1f340; &#x1f339; &#x1f33b; &#x1f33a; &#x1f341; &#x1f343; &#x1f342; &#x1f33f; &#x1f344;&#x1f35d; &#x1f35b; &#x1f364; &#x1f4c3;个人主页 &#xff1a;阿然成长日记 …

浏览器 - 事件循环机制详解

目录 1&#xff0c;浏览器进程模型进程线程浏览器的进程和线程1&#xff0c;浏览器进程2&#xff0c;网络进程3&#xff0c;渲染进程 2&#xff0c;渲染主线程事件循环异步同步 JS 为什么会阻塞渲染任务优先级 3&#xff0c;常见面试题1&#xff0c;如何理解 js 的异步2&#x…

C语言刷题 1

文章目录 题目答案与解析123 题目 1.strcpy实现 自己设计函数模拟实现库函数strcpy 2.strlen实现 自己设计函数模拟实现库函数strlen 3.调整奇数偶数顺序 输入一个整数数组&#xff0c;实现一个函数&#xff0c;来调整该数组中数字的顺序使得数组中所有的奇数位于数组的前半部…

❤ Vue工作常用的一些动态数据和方法处理

❤ Vue工作常用的一些动态数据和方法处理 &#xff08;1&#xff09;动态拼接相对路径结尾的svg 错误写法一 ❌ 正确写法 &#x1f646; <img :src"require(/assets//amazon/svg/homemenu${index}.svg)" style"height: 20px;display: block;margin: 0 au…

关于视频监控平台EasyCVR视频汇聚平台建设“明厨亮灶”具体实施方案以及应用

一、方案背景 近几年来&#xff0c;餐饮行业的食品安全、食品卫生等新闻频频发生&#xff0c;比如某火锅店、某网红奶茶&#xff0c;食材以次充好、后厨卫生被爆堪忧&#xff0c;种种问题引起大众关注和热议。这些负面新闻不仅让餐饮门店的品牌口碑暴跌&#xff0c;附带的连锁…

[JavaWeb]【二】Vue Ajax Elemnet Vue路由打包部署

目录 一 什么是Vue 1.1 Vue快速入门 1.2 常用指令 1.2.1 v-bind && v-model 1.2.2 v-on 1.2.3 v-if && v-show 1.2.4 v-for 1.2.5 案例 1.3 生命周期 二 Ajax 2.1 Ajax介绍 2.2 同步与异步 2.3 原生Ajax&#xff08;繁琐&#xff0c;过时了&#xff09…

手机技巧:分享五个非常实用的生活类APP

目录 1、我的桌面iScreen-桌面美化神器 2.Just Rain-创意听雨声APP 3.得言-美文句子神器 4、微手帐 5、暗盒-隐私保护神器 今天给大家整理5个非常实用的实用APP软件&#xff0c;感兴趣的朋友可以下载试试&#xff01; 1、我的桌面iScreen-桌面美化神器 我的桌面iScreen是一…