当前位置: 首页 > news >正文

每日OJ题_算法_双指针⑦力扣15. 三数之和

目录

力扣15. 三数之和

解析代码


力扣15. 三数之和

难度 中等

给你一个整数数组 nums ,判断是否存在三元组 [nums[i], nums[j], nums[k]] 满足 i != ji != 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] <= 10^5
class Solution {
public:vector<vector<int>> threeSum(vector<int>& nums) {}
};

解析代码

建议看了上一篇:双指针⑥剑指 Offer 57. 和为s的两个数字再来看这一题。

与两数之和稍微不同的是,题目中要求找到所有「不重复」 的三元组。那我们可以利用在两数之和那里用的双指针思想,来对我们的暴力枚举做优化:先排序,然后固定- -个数a,在这个数后面的区间内,使用「双指针算法」快速找到两个数之和等于-a即可。但是要注意的是,这道题里面需要有「去重」操作,找到一个结果之后,left和right | 指针要「跳过重复」 的元素,当使用完一-次双指针算法之后,固定的a也要「跳过重复」的元素。

class Solution {
public:vector<vector<int>> threeSum(vector<int>& nums) {vector<vector<int>> ret;sort(nums.begin(), nums.end());int n = nums.size();for(int i = 0; i < n;) // i是固定的数的下标{if(nums[i] > 0) // 小优化{break;}int left = i + 1, right = n - 1, target = -nums[i];while(left < right){int sum = nums[left] + nums[right];if(sum < target){++left;}else if(sum > target){--right;}else{ret.push_back({nums[i], nums[left++], nums[right--]});while(left < right && nums[left] == nums[left - 1]) // 去重{++left;}while(left < right && nums[right] == nums[right + 1]){--right;}}}++i;while(i < n && nums[i] == nums[i - 1]) // 对i去重->for循环里不用++i了{++i;}}return ret;}
};

相关文章:

每日OJ题_算法_双指针⑦力扣15. 三数之和

目录 力扣15. 三数之和 解析代码 力扣15. 三数之和 难度 中等 给你一个整数数组 nums &#xff0c;判断是否存在三元组 [nums[i], nums[j], nums[k]] 满足 i ! j、i ! k 且 j ! k &#xff0c;同时还满足 nums[i] nums[j] nums[k] 0 。请 你返回所有和为 0 且不重复的三…...

【计算机网络学习之路】日志和守护进程

文章目录 前言一. 日志介绍二. 简单日志1. 左字符串2. 右字符串 三. 守护进程1. ps -axj命令2. 会话扩展命令 3. 创建守护进程 结束语 前言 本系列文章是计算机网络学习的笔记&#xff0c;欢迎大佬们阅读&#xff0c;纠错&#xff0c;分享相关知识。希望可以与你共同进步。 本…...

foobar2000 突然无法正常输出DSD信号

之前一直在用foobar2000加外置dac听音乐&#xff0c;有一天突然发现听dsd的时候&#xff0c;dac面板显示输出的是PCM格式信号&#xff0c;而不是DSD信号&#xff0c;这让我觉得很奇怪&#xff0c;反复折腾了几次&#xff0c;卸载安装驱动什么的&#xff0c;依然如此&#xff0c…...

鸿蒙HarmonyOS 编辑器 下载 安装

好 各位 之前的文章 注册并实名认证华为开发者账号 我们基实名注册了华为的开发者账号 我们可以访问官网 https://developer.harmonyos.com/cn/develop/deveco-studio 在这里 直接就有我们编辑器的下载按钮 我们直接点击立即下载 这里 我们根据自己的系统选择要下载的系统 例…...

机器学习第13天:模型性能评估指标

☁️主页 Nowl &#x1f525;专栏《机器学习实战》 《机器学习》 &#x1f4d1;君子坐而论道&#xff0c;少年起而行之 文章目录 交叉验证 保留交叉验证 k-折交叉验证 留一交叉验证 混淆矩阵 精度与召回率 介绍 精度 召回率 区别 使用代码 偏差与方差 介绍 区…...

Elasticsearch基础优化

分片策略 分片和副本得设计为ES提供支付分布式和故障转移得特性&#xff0c;但不意味着分片和副本是可以无限分配&#xff0c; 而且索引得分片完成分配后由于索引得路由机制&#xff0c;不能重新修改分片数&#xff08;副本数可以动态修改&#xff09; 一个分片得底层为一个l…...

【Amazon】通过直接连接的方式导入 KubeSphere集群至KubeSphere主容器平台

文章目录 一、设置主集群方式一&#xff1a;使用 Web 控制台方式二&#xff1a;使用 Kubectl命令 二、在主集群中设置代理服务地址方式一&#xff1a;使用 Web 控制台方式二&#xff1a;使用 Kubectl命令 三、登录控制台验证四、准备成员集群方式一&#xff1a;使用 Web 控制台…...

三数之和问题

给你一个整数数组 nums &#xff0c;判断是否存在三元组 [nums[i], nums[j], nums[k]] 满足 i ! j、i ! k 且 j ! k &#xff0c;同时还满足 nums[i] nums[j] nums[k] 0 。请 你返回所有和为 0 且不重复的三元组。 注意&#xff1a;答案中不可以包含重复的三元组。 示例 1&…...

【JavaEE】多线程 (2) --线程安全

目录 1. 观察线程不安全 2. 线程安全的概念 3. 线程不安全的原因 4. 解决之前的线程不安全问题 5. synchronized 关键字 - 监视器锁 monitor lock 5.1 synchronized 的特性 5.2 synchronized 使⽤⽰例 1. 观察线程不安全 package thread; public class ThreadDemo19 {p…...

关于点胶机那些事

总结一下点胶机技术要点&#xff1a; 1&#xff1a;不论多复杂的点胶机&#xff0c;简单点&#xff0c;可以简化为&#xff1a;1&#xff1a;运控 2&#xff1a;点胶&#xff0c;3&#xff1a;检测 运控的目的就是负责把针头移到面板对应的胶路上&#xff0c;点胶即就是排胶&…...

Python | CAP - 累积精度曲线分析案例

CAP通常被称为“累积精度曲线”&#xff0c;用于分类模型的性能评估。它有助于我们理解和总结分类模型的鲁棒性。为了直观地显示这一点&#xff0c;我们在图中绘制了三条不同的曲线&#xff1a; 一个随机的曲线&#xff08;random&#xff09;通过使用随机森林分类器获得的曲线…...

ubuntu22.04安装swagboot遇到的问题

一、基本情况 系统&#xff1a;u 22.04 python&#xff1a; 3.10 二、问题描述 swagboot官方提供的安装路径言简意赅:python3 -m pip install --user snagboot 当然安装python3和pip是基本常识&#xff0c;这里就不再赘述。 可是在安装的时候出现如下提示说 Failed buildin…...

python每日一题——8无重复字符的最长子串

题目 给定一个字符串 s &#xff0c;请你找出其中不含有重复字符的 最长子串 的长度。 示例 1: 输入: s “abcabcbb” 输出: 3 解释: 因为无重复字符的最长子串是 “abc”&#xff0c;所以其长度为 3。 示例 2: 输入: s “bbbbb” 输出: 1 解释: 因为无重复字符的最长子串…...

【数据中台】开源项目(2)-Dbus数据总线

1 背景 企业中大量业务数据保存在各个业务系统数据库中&#xff0c;过去通常的同步数据的方法有很多种&#xff0c;比如&#xff1a; 各个数据使用方在业务低峰期各种抽取所需数据&#xff08;缺点是存在重复抽取而且数据不一致&#xff09; 由统一的数仓平台通过sqoop到各个…...

职场快速赢得信任

俗话说的好&#xff0c;有人的地方就有江湖。 国内不管是外企、私企、国企&#xff0c;职场环境都是变换莫测。 这里主要分享下怎么在职场中快速赢取信任。 1、找到让自己全面发展的方法 要知道&#xff0c;职场中话题是与他人交流的纽带&#xff0c;为了找到共同的话题&am…...

【SpringBoot3+Vue3】五【完】【实战篇】-前端(配合后端)

目录 一、环境准备 1、创建Vue工程 2、安装依赖 2.1 安装项目所需要的vue依赖 2.2 安装element-plus依赖 2.2.1 安装 2.2.2 项目导入element-plus 2.3 安装axios依赖 2.4 安装sass依赖 3、目录调整 3.1 删除部分默认目录下文件 3.1.1 src/components下自动生成的…...

[LaTex]arXiv投稿攻略——jpg/png转pdf

一、将图片复制进ppt&#xff0c;右键单击图片选择设置图片格式&#xff0c;获取图片高度和宽度 二、选择“设计-幻灯片大小-自定义幻灯片大小” 三、设置幻灯片大小为图片大小 四、 选择“最大化” 五、 检查幻灯片大小是否与图像大小一致 六、导出为PDF...

使用Pytorch从零开始构建GRU

门控循环单元 (GRU) 是 LSTM 的更新版本。让我们揭开这个网络的面纱并探索这两个兄弟姐妹之间的差异。 您听说过 GRU 吗&#xff1f;门控循环单元&#xff08;GRU&#xff09;是更流行的长短期记忆&#xff08;LSTM&#xff09;网络的弟弟&#xff0c;也是循环神经网络&#x…...

【尚跑】2023宝鸡马拉松安全完赛,顺利PB达成

1、赛事背景 千年宝地&#xff0c;一马当先&#xff01;10月15日7时30分&#xff0c;吉利银河2023宝鸡马拉松在宝鸡市行政中心广场鸣枪开跑。 不可忽视的是&#xff0c;这次赛事的卓越之处不仅在于规模和参与人数&#xff0c;还在于其精心的策划和细致入微的组织。为了确保每位…...

Mac nginx安装,通过源码安装教程

第一部分 安装参考网址&#xff1a; https://blog.csdn.net/a1004084857/article/details/128512612&#xff1b; 以上步骤执行完&#xff0c;进入找到sbin目录&#xff0c;查看下面是不是有nginx可执行文件&#xff0c;如果有在当前sbin下执行./nginx,就会发现NGINX已启动 第…...

2026奇点智能技术大会前瞻(仅限首批参会者解密的8项AI-Native Data Stack技术白皮书)

第一章&#xff1a;2026奇点智能技术大会&#xff1a;AI原生大数据处理 2026奇点智能技术大会(https://ml-summit.org) 本届大会首次定义“AI原生大数据处理”范式——数据不再经由传统ETL管道预处理后喂给模型&#xff0c;而是以流式、语义化、向量化形态直接进入推理与训练…...

平时没感觉突然痛到动不了,颈椎病腰间盘突出早有潜伏信号,成因症状与防护干货速收藏

很多人觉得颈腰椎病是 "慢性病"&#xff0c;会慢慢加重&#xff0c;却不知道它常常以 "突然爆发" 的形式出现。 不少患者前一天还正常工作生活&#xff0c;第二天就突然颈痛难忍、腰痛到无法下床&#xff0c;这其实是因为疾病早已在体内潜伏多年&#xff…...

使用Alpine配置WSL ssh门户狙

1. 哑铃图是什么&#xff1f; 哑铃图&#xff08;Dumbbell Plot&#xff09;&#xff0c;有时也称为DNA图或杠铃图&#xff0c;是一种用于比较两个相关数据点的可视化图表。 它源于人们对更有效数据比较方式的持续探索。 在传统的时间序列比较中&#xff0c;我们通常使用两条折…...

三步找回消失的OBS多路推流窗口:新手必看指南

三步找回消失的OBS多路推流窗口&#xff1a;新手必看指南 【免费下载链接】obs-multi-rtmp OBS複数サイト同時配信プラグイン 项目地址: https://gitcode.com/gh_mirrors/ob/obs-multi-rtmp 问题三部曲&#xff1a;你的插件窗口去哪了&#xff1f; "明明安装好了o…...

HFSS新手避坑指南:用FR-4板材搞定双频Wi-Fi单极子天线(含S11优化技巧)

HFSS新手避坑指南&#xff1a;用FR-4板材搞定双频Wi-Fi单极子天线&#xff08;含S11优化技巧&#xff09; 刚接触HFSS的天线设计新手&#xff0c;往往会在仿真过程中遇到各种"坑"&#xff1a;明明按照教程操作&#xff0c;S11曲线却离奇偏移&#xff1b;谐振频率与预…...

RVC多语言支持实测:中文/日文/韩文/英文语音转换效果横向对比

RVC多语言支持实测&#xff1a;中文/日文/韩文/英文语音转换效果横向对比 1. 引言&#xff1a;当AI学会“说”多国语言 想象一下&#xff0c;你手头有一段自己的中文录音&#xff0c;但你需要一段日文配音的视频&#xff0c;或者一段韩文的产品介绍。传统方法要么找专业配音&…...

4.2《深入理解内存池(Memory Pool)与内存块(Memory Slab)设计与实现》

001、内存管理基础:从malloc/free到自定义内存管理器的必要性 一、从一次深夜调试说起 上周排查一个嵌入式设备偶发性死机问题,日志停在某行动态分配代码后消失。堆内存碎片化了——连续运行十几小时后,8MB的堆剩余总量还有3MB,但就是无法分配出一个连续的50KB缓冲区。设备…...

Cogito-v1-preview-llama-3B入门必看:为什么3B参数能跑赢7B竞品?技术拆解

Cogito-v1-preview-llama-3B入门必看&#xff1a;为什么3B参数能跑赢7B竞品&#xff1f;技术拆解 你肯定听过不少大模型&#xff0c;动不动就是7B、13B甚至更大。参数越大&#xff0c;能力越强&#xff0c;这似乎是常识。但今天要聊的这个模型&#xff0c;可能要颠覆你的认知了…...

从DeepWalk到Node2Vec:探索有偏随机游走的图嵌入演进之路

1. 图嵌入技术的前世今生 第一次听说"图嵌入"这个概念时&#xff0c;我正对着社交网络数据发愁。当时手上有几百万用户的关系数据&#xff0c;传统的分析方法完全无法处理这种规模的数据。直到接触了DeepWalk&#xff0c;才真正打开了图数据分析的新世界大门。 图嵌入…...

GPUStack 在华为昇腾 I A 服务器上的保姆级部署指南参

开发个什么Skill呢&#xff1f; 通过 Skill&#xff0c;我们可以将某些能力进行模块化封装&#xff0c;从而实现特定的工作流编排、专家领域知识沉淀以及各类工具的集成。 这里我打算来一次“套娃式”的实践&#xff1a;创建一个用于自动生成 Skill 的 Skill&#xff0c;一是用…...