day-52 三数之和

news2024/9/22 5:31:14

在这里插入图片描述
思路
双指针:确定最小的那个数(i0<=i<nums.length-2),剩下两个数可以利用双指针的思想。当最小的那个数大于零时,可以直接返回,因为后面的不可能还有满足题意的组合。

解题过程
为了所有满足题意的组合不重合,每当选定一个元素时,若该元素与排在他之前相邻的那个元素相同,需要直接跳过

Code

class Solution {
    public List<List<Integer>> threeSum(int[] nums) {
        Arrays.sort(nums);
       List<List<Integer>> list=new ArrayList<>();
       int len=nums.length;
       for(int i=0;i<len-2;i++){
           if(nums[i]>0) break;
           if(i>0&&nums[i]==nums[i-1]) continue;
           int j=i+1;
           int k=len-1;
           while(j<k){
               if(nums[i]+nums[j]+nums[k]==0){
                   List<Integer> p=new ArrayList<>();
                   p.add(nums[i]);
                   p.add(nums[j]);
                   p.add(nums[k]);
                   list.add(p);
                   j++;
                   while(j<len&&nums[j]==nums[j-1]) j++;
               }else if(nums[i]+nums[j]+nums[k]<0){
                   j++;
                   while(j<len&&nums[j]==nums[j-1]) j++;
               }else{
                   k--;
                   while(k>0&&nums[k]==nums[k+1]) k--;
               }
           }
       }
       return list;
    }
}

作者:菜卷
链接:https://leetcode.cn/problems/3sum/solutions/2912217/san-shu-zhi-he-by-ashi-jian-chong-dan-li-oecj/
来源:力扣(LeetCode)
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

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

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

相关文章

async、await、promise异步操作详解

一、async、await、Promise使用介绍 当然&#xff01;在 TypeScript 中&#xff0c;Promise 的使用可以涉及多个方面&#xff0c;包括基础用法、类型系统、异步操作的错误处理以及高级用法等。下面我会详细讲解这些内容。 1. Promise 的基本概念 Promise 是一种用于处理异步操…

StorageSync数据缓存API

uni.setStorageSyncs参数:将 data 存储在本地缓存中指定的 key 中&#xff0c;会覆盖掉原来该 key 对应的内容&#xff0c;这是一个同步接口。 uni.setStorageSync函数里面写两个参数,分别是key和值,两个参数名称可以随便取,如果有同名的key,那么后面key的值会覆盖掉前面key的值…

git cz 规范化 git commit 格式

git cz 规范化 git commit 格式 npm install git-cz --save-devnpm install commitizen --save-devnpm install cz-customizable --save-dev // 这是package.json自动生成的 "config": {"commitizen": {"path": "./node_modules/cz-custo…

《OpenCV计算机视觉》—— 图像金字塔

文章目录 什么是图像金字塔&#xff1f;一、定义与基本原理二、主要类型三、构建过程四、应用领域 图像金字塔中的下采样和上采样一、下采样&#xff08;Downsampling&#xff09;二、上采样&#xff08;Upsampling&#xff09;三、总结 代码实现 什么是图像金字塔&#xff1f;…

[进阶]面向对象之多态(二)

文章目录 多态调用成员的特点多态的优势和弊端 多态调用成员的特点 变量调用:编译看左边,运行也看左边方法调用:编译看左边,运行看右边 多态的优势和弊端 优势&#xff1a; 在多态形式下&#xff0c;右边对象可以实现解耦合&#xff0c;便于扩展和维护定义方法的时候&…

【MySQL】查询表中重复数据、模糊查询列信息、快速copy表数据(1)

一、SQL查询重复的数据&#xff1a; 1、SQL格式&#xff1a; Select * From 数据表 Where 重复记录字段 in ( select 重复记录字段 From 数据表 Group By 重复记录字段 Having Count(重复记录字段)>1) 2、举例&#xff1a; 在这个patient_member_info表中&#xff0c;我们…

kkFileView PDF Image Mode Preview BUG

kkFileView PDF & Image Mode Preview BUG lazyload.js officePicture.ftl pdf.ftl kkFileView getCorsFile?urlPath 会触发SSRF漏洞 kkFileView SSRF-CSDN博客 commonHeader.ftl initWaterMark() 修改代码的工作量&#xff0c;主要是先部署项目&#xff0c;解…

2023年408真题计算机网络篇

https://zhuanlan.zhihu.com/p/6954228062023年网络规划设计师上午真题解析TCP流量计算_哔哩哔哩_bilibili 1 1在下图所示的分组交换网络中&#xff0c;主机H1和H2通过路由器互联&#xff0c;2段链路的数据传输速率为100 Mb/s、时延带宽积 &#xff08;即单向传播时延带宽&am…

计算机毕业设计 家校互联管理系统 Java+SpringBoot+Vue 前后端分离 文档报告 代码讲解 安装调试

&#x1f34a;作者&#xff1a;计算机编程-吉哥 &#x1f34a;简介&#xff1a;专业从事JavaWeb程序开发&#xff0c;微信小程序开发&#xff0c;定制化项目、 源码、代码讲解、文档撰写、ppt制作。做自己喜欢的事&#xff0c;生活就是快乐的。 &#x1f34a;心愿&#xff1a;点…

【Linux实践】实验一:Linux系统安装与启动

【Linux实践】实验一&#xff1a;Linux系统安装与启动 实验目的实验内容实验步骤及结果1. 下载VMware2. 下载 Linux 操作系统3. 在VMware中安装Ubuntu系统4. 配置Ubuntu系统5. 关机 实验目的 1.掌握Linux系统的安装过程和简单配置方法。 2.掌握与Linux相关的多操作系统的安装方…

centos挂载fat32和ntfs文件系统u盘

centos挂载u盘 一、 挂载fat32文件系统u盘1. 查看u盘的文件系统2. 查看系统是否识别到u盘3. 挂载fat32文件系统u盘 二、挂载ntfs文件系统u盘1. 检查u盘文件系统&#xff08;忽略&#xff09;2. 查看系统是否识别到u盘3. 挂载ntfs文件系统3.1. 下载ntfs-3g组件3.2. 挂载u盘 一、…

嵌入式day42

framebuffer&#xff1a;帧缓冲、帧缓存 Linux内核为显示提供的一套应用程序接口&#xff08;驱动内核支持&#xff09; 分辨率&#xff1a;像素点的总和 像素点&#xff1a; 显示屏&#xff1a;800*600&#xff08;横向有800个像素点&#xff0c;纵向有600个像素点&#x…

【笔记】1.1 拉伸力-伸长(延伸)曲线和应力-应变曲线

文章目录 拉伸力-伸长&#xff08;延伸&#xff09;曲线低碳钢的拉伸力-伸长&#xff08;延伸&#xff09;曲线公称应力公称应变真应力真应变公称应力和真应力、公称应变和真应变的关系 应力-应变曲线公称应力-公称应变曲线真应力-真应变曲线 拉伸力-伸长&#xff08;延伸&…

Unity1 Prefab

修改预设体 进入预设体面板来改 在Hierarchy中可以给预制体添加对象 第一种方法&#xff1a;添加了之后把Hierarchy中的预制体拖到Project中的预制体上 就可以修改原本的预制体 第二种方法&#xff1a;添加了之后在inspector中 点revert 就是重置所有预制体 添加的就没有…

Docker基本管理--Dockerfile镜像制作(Docker技术集群与应用)

容器端口映射&#xff1b; 容器间通信&#xff1b; 容器数据卷&#xff1b; DockerFile; 容器端口映射: 实验环境&#xff1a;紧接着之前的快照&#xff0c;将该文件夹拉取进去&#xff1b; 然后执行导入的脚本&#xff0c;会将该目录下所有打包好的镜像文件导入进入。 然后进…

containerd二进制安装

文章目录 安装版本&#xff08;截止2024年9月10日&#xff09;方式1&#xff1a;yum安装&#xff08;不推荐&#xff09;设置主机名设置IP获取阿里YUM源查询containerd安装验证与启动服务测试命令 方式2&#xff1a;二进制安装&#xff08;推荐&#xff09;安装之前先了解conta…

游戏创作的梦想之地!EE GAMES 创作者社区上线,VipSkill产学研结合迈开重大步伐

&#xff25;&#xff25; &#xff27;&#xff21;&#xff2d;&#xff25;&#xff33; 官网 EE GAMES创作者社区 是一个怎样的平台&#xff1f; EE GAMES 创作者社区&#xff0c;是专注于链接每一位游戏创作者&#xff0c;提供全方位服务的游戏领域垂类社区。 这里不仅…

信号完整性仿真中关于铜箔粗糙度的三篇文献

首先放文献&#xff1a; Paul G. Huray. "Surface Roughness", in The Foundations of Signal Integrity. John Wiley & Sons, Inc., Hoboken, New Jersey. 2009. Paul G. Huray. "Impact of Copper Surface Texture on Loss: A model That Works", …

算法工程师重生之第三天( 链表理论基础 移除链表元素 设计链表 反转链表 )

参考文献 代码随想录 一、 链表理论基础 什么是链表&#xff0c;链表是一种通过指针串联在一起的线性结构&#xff0c;每一个节点由两部分组成&#xff0c;一个是数据域一个是指针域&#xff08;存放指向下一个节点的指针&#xff09;&#xff0c;最后一个节点的指针域指向nu…

关于粒子滤波的解析

粒子滤波流程 基本原理&#xff1a;随机选取预测域的 N NN 个点&#xff0c;称为粒子。以此计算出预测值&#xff0c;并算出在测量域的概率&#xff0c;即权重&#xff0c;加权平均就是最优估计。之后按权重比例&#xff0c;重采样&#xff0c;进行下次迭代。 初始状态&#x…