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

20哈希表-三数之和

目录

LeetCode之路——15. 三数之和

分析:

官方题解:


LeetCode之路——15. 三数之和

给你一个整数数组 nums ,判断是否存在三元组 [nums[i], nums[j], nums[k]] 满足 i != ji != kj != 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

分析:

借助1. 两数之和的思路,可以让nums[i] =a去遍历数组作为target。同时nums[i+1] =b继续遍历数组,找到nums[j]满足 a + b + nums[j] =0.

1.需要注意元素组去重。

2.需要注意数组边界。

class Solution {public List<List<Integer>> threeSum(int[] nums) {List<List<Integer>> res = new ArrayList<>();if (nums.length < 3) return res;Arrays.sort(nums); // 递增顺序for (int i = 0; i < nums.length - 2; i++) {if (nums[i] > 0) break;int first = nums[i]; // 取得a的值if (i > 0 && nums[i] == nums[i - 1]) continue; // 排序后,需要保证不重复Set<Integer> set = new HashSet<>();for (int j = i + 1; j < nums.length; j++) {int second = nums[j]; // 取得b的值int third = - (first + second);if (set.contains(third)) {res.add(new ArrayList<>(Arrays.asList(first,second,third)));while(j < nums.length - 1 && nums[j] == nums[j + 1]) j++;}set.add(second);}}return res;}
}
  • 时间复杂度:O(N^2)

  • 空间复杂度:O(N)

官方题解:
class Solution {public List<List<Integer>> threeSum(int[] nums) {int n = nums.length;Arrays.sort(nums);List<List<Integer>> ans = new ArrayList<List<Integer>>();// 枚举 afor (int first = 0; first < n; ++first) {// 需要和上一次枚举的数不相同if (first > 0 && nums[first] == nums[first - 1]) {continue;}// c 对应的指针初始指向数组的最右端int third = n - 1;int target = -nums[first];// 枚举 bfor (int second = first + 1; second < n; ++second) {// 需要和上一次枚举的数不相同if (second > first + 1 && nums[second] == nums[second - 1]) {continue;}// 需要保证 b 的指针在 c 的指针的左侧while (second < third && nums[second] + nums[third] > target) {--third;}// 如果指针重合,随着 b 后续的增加// 就不会有满足 a+b+c=0 并且 b<c 的 c 了,可以退出循环if (second == third) {break;}if (nums[second] + nums[third] == target) {List<Integer> list = new ArrayList<Integer>();list.add(nums[first]);list.add(nums[second]);list.add(nums[third]);ans.add(list);}}}return ans;}
}
​
作者:力扣官方题解
链接:https://leetcode.cn/problems/3sum/solutions/284681/san-shu-zhi-he-by-leetcode-solution/
来源:力扣(LeetCode)
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
  • 时间复杂度:O(N^2)

  • 空间复杂度:O(N)

相关文章:

20哈希表-三数之和

目录 LeetCode之路——15. 三数之和 分析&#xff1a; 官方题解&#xff1a; LeetCode之路——15. 三数之和 给你一个整数数组 nums &#xff0c;判断是否存在三元组 [nums[i], nums[j], nums[k]] 满足 i ! j、i ! k 且 j ! k &#xff0c;同时还满足 nums[i] nums[j] nu…...

JVM 运行时数据区和垃圾收集算法

在 《深入理解 Java 虚拟机》一书中&#xff0c;作者将运行时数据区和垃圾收集算法放在开头章节&#xff0c;说明了这两个知识点是进一步学习 JVM 的基础知识点&#xff0c;相比后续的 垃圾收集器和 JMM&#xff0c;它也更加的简单。 运行时数据区 运行时数据区是《Java 虚拟…...

Java基于SpringBoot的高校招生系统

博主介绍&#xff1a;✌程序员徐师兄、7年大厂程序员经历。全网粉丝30W、csdn博客专家、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ 文章目录 简介系统设计思路1 数据库设计2 系统整体设计 系统详细设计1系统功能模块2. 管理员功能模块3学生…...

6. Python使用Asyncio开发TCP服务器简单案例

1. 说明 在Python中开发TCP/IP服务器有两种方式&#xff0c;一种使用Socket&#xff0c;需要在py文件中引入对应的socket包&#xff0c;这种方式只能执行单项任务&#xff1b;另一种方式使用Asyncio异步编程&#xff0c;可以一次创建多个服务器执行不同的任务。 2. 接口说明 …...

景联文科技:AI大模型强势赋能,助力自动驾驶迭代升级

我国一直以来都将自动驾驶作为新兴产业发展的重点领域之一&#xff0c;工信部等相关部委出台了一系列自动驾驶发展战略、规划和标准&#xff0c;一些地方政府也在积极开展关于自动驾驶的地方立法&#xff0c;为自动驾驶技术的研发和应用提供更加具体的法律保障。例如&#xff0…...

多周期CPU设计

多周期CPU设计 指令类型clock skew 指令类型 在计算机体系结构中&#xff0c;指令可以分为不同的类型&#xff0c;通常有R-type、I-type和J-type指令。 R-type指令&#xff08;Register-type指令&#xff09;&#xff1a; R-type指令通常用于执行寄存器之间的操作&#xff0c;…...

Go 复合类型之字典类型介绍

Go 复合类型之字典类型介绍 文章目录 Go 复合类型之字典类型介绍一、map类型介绍1.1 什么是 map 类型&#xff1f;1.2 map 类型特性 二.map 变量的声明和初始化2.1 方法一&#xff1a;使用 make 函数声明和初始化&#xff08;推荐&#xff09;2.2 方法二&#xff1a;使用复合字…...

对于无法直接获取URL的数据爬虫

在爬学校安全教育题库的时候发现题库分页实际上执行了一段js代码&#xff0c;如下图所示 点击下一页时是执行了函数doPostBack&#xff0c;查看页面源码如下 点击下一页后这段js提交了一个表单&#xff0c;随后后端返回对应数据&#xff0c;一开始尝试分析获取对应两个参数&a…...

35.树与二叉树练习(1)(王道第5章综合练习)

【所用的树&#xff0c;队列&#xff0c;栈的基本操作详见上一节代码】 试题1&#xff08;王道5.3.3节第3题&#xff09;&#xff1a; 编写后序遍历二叉树的非递归算法。 参考&#xff1a;34.二叉链树的C语言实现_北京地铁1号线的博客-CSDN博客https://blog.csdn.net/qq_547…...

JSON数据处理工具-在线工具箱网站tool.qqmu.com的使用指南

导语&#xff1a;无论是处理JSON数据、进行文本数字处理、解码加密还是使用站长工具&#xff0c;我们都希望能够找到一个功能强大、简便易用的在线平台。tool.qqmu.com作为一款瑞士军刀般的在线工具箱网站&#xff0c;满足了众多用户的需求。本文将介绍tool.qqmu.com的多项功能…...

leetcode:190. 颠倒二进制位

一、题目&#xff1a; 函数原型&#xff1a; uint32_t reverseBits(uint32_t n) 解释&#xff1a;uint32是无符号int或short的别称&#xff0c;传入的参数是一个32位二进制串&#xff0c;返回值是该32位二进制串逆序后的十进制值 二、思路&#xff1a; 实际上并不需要真的去逆…...

Spring Cloud--@RefreshScope动态刷新的注意事项

原文网址&#xff1a;Spring Cloud--RefreshScope动态刷新的注意事项_IT利刃出鞘的博客-CSDN博客 简介 本文介绍Spring Cloud的RefreshScope动态刷新的注意事项。 不用RefreshScope也能动态刷新 Spring Cloud的默认实现了动态刷新&#xff0c;不加RefreshScope就能实现动态…...

visual-studio-code通过跳板机连接远程服务器的配置操作

step1:在本机上生成私钥和公钥 sh-keygen -t rsa -C “your_emailxxx.com”生成的两个默认文件中&#xff0c;id_rsa.pub是公钥&#xff0c;id_rsa是私钥 step2:在vscode安装Remote-SSH插件 step3:将本机生成的私钥和公钥上传服务器上 把本机生成的rsa_id.pub公钥上传至服务…...

LuatOS-SOC接口文档(air780E)-- gpio - GPIO操作

常量 常量 类型 解释 gpio.LOW number 低电平 gpio.HIGH number 高电平 gpio.PULLUP number 上拉 gpio.PULLDOWN number 下拉 gpio.RISING number 上升沿触发 gpio.FALLING number 下降沿触发 gpio.BOTH number 双向触发,部分设备支持 gpio.HIGH_IRQ …...

一个命令让redis服务端所有信息无所遁形~(收藏吃灰系列)

Redis服务器是一个事件驱动程序&#xff0c;它主要处理两类事件&#xff1a;文件事件和时间事件。这些事件的处理和Redis命令的执行密切相关。下面我将以Redis服务端命令为切入点&#xff0c;深入解析其工作原理和重要性。 首先&#xff0c;我们先了解Redis服务端有哪些命令。…...

通过Node.js获取高德的省市区数据并插入数据库

通过Node.js获取高德的省市区数据并插入数据库 1 创建秘钥1.1 登录高德地图开放平台1.2 创建应用1.3 绑定服务创建秘钥 2 获取数据并插入2.1 创建数据库连接工具2.2 请求数据2.3 数据处理2.4 全部代码 3 还可以打印文件到本地 1 创建秘钥 1.1 登录高德地图开放平台 打开开放平…...

记一次 .NET某账本软件 非托管泄露分析

一&#xff1a;背景 1. 讲故事 中秋国庆长假结束&#xff0c;哈哈&#xff0c;在老家拍了很多的短视频&#xff0c;有兴趣的可以上B站观看&#xff1a;https://space.bilibili.com/409524162 &#xff0c;今天继续给大家分享各种奇奇怪怪的.NET生产事故&#xff0c;希望能帮助…...

Oracle笔记-对ROWNUM的一次理解(简单分页)

此博文记录时间&#xff1a;2023-05-05&#xff0c;发到互联网上是2023-10-09 这个在分页里面用得比较多&#xff0c;在MySQL中&#xff0c;通常使用limit去操作&#xff0c;而去感觉比较简单&#xff0c;Oracle中无此关键字。 通过查阅资料后&#xff0c;要实现分页需要用到…...

系统架构设计:10 论数据湖技术及其应用

目录 一 数据湖技术 1 数据库 2 数据仓库 3 数据库与数据仓库的对比 4 数据湖...

【MySQL】基本查询(三)聚合函数+group by

文章目录 一. 聚合函数二. group by子句结束语 建立如下表 //创建表结构 mysql> create table exam_result(-> id int unsigned primary key auto_increment,-> name varchar(20) not null comment 同学姓名,-> chinese float default 0.0 comment 语文成绩,->…...

RK3568开发板烧录避坑指南:Maskrom和Loader模式切换失败?手把手教你排查(附串口调试技巧)

RK3568开发板烧录模式切换全攻略&#xff1a;从原理到实战排查 刚拿到RK3568开发板的开发者们&#xff0c;往往会在第一个环节就遭遇"拦路虎"——开发板死活进不了Maskrom或Loader模式。看着官方文档里简单的按键操作说明&#xff0c;实际操作时却像在玩一场没有规则…...

VINS-Mono跑EUROC数据集后,如何用evo工具包进行轨迹精度评估与可视化(附完整命令)

VINS-Mono轨迹精度评估实战&#xff1a;从EUROC数据集到evo工具包全流程解析 在完成VINS-Mono算法在EUROC数据集上的运行后&#xff0c;如何科学评估其轨迹精度成为算法优化和论文撰写的关键环节。本文将深入讲解使用evo工具包进行定量分析的完整流程&#xff0c;涵盖指标计算、…...

从‘知识冲突’到‘对齐’:图解ProGrad如何让CLIP微调既专又通

ProGrad&#xff1a;用向量几何重新思考多模态模型的微调艺术 想象一下&#xff0c;你正在训练一位精通多国语言的老教授学习一门新方言。如果完全放任他自由发挥&#xff0c;可能会丢失原有的语言体系&#xff1b;如果限制太多&#xff0c;又无法适应新语境。这正是CLIP等预训…...

代理优先(Agent-First)软件开发全生命周期流程解析

1. 引言&#xff1a;从“手动编码”到“系统导航”的范式转移 在传统的软件工程中&#xff0c;人类工程师是代码的“砖瓦匠”&#xff0c;将大部分认知带宽消耗在每一行代码的编写与微观调试上。然而&#xff0c;OpenAI 最新的实践证明了一种激进的范式转移&#xff1a;在一个为…...

UnrealPakViewer实战指南:解决Pak文件解析难题的5个创新方法

UnrealPakViewer实战指南&#xff1a;解决Pak文件解析难题的5个创新方法 【免费下载链接】UnrealPakViewer 查看 UE4 Pak 文件的图形化工具&#xff0c;支持 UE4 pak/ucas 文件 项目地址: https://gitcode.com/gh_mirrors/un/UnrealPakViewer 当你面对10GB加密Pak包&…...

Linux服务器安全升级:5分钟搞定Google Authenticator+SSH双因素认证(附应急码管理技巧)

Linux服务器极简安全升级&#xff1a;Google Authenticator与SSH双因素认证实战指南 当你还在为服务器密码泄露风险辗转反侧时&#xff0c;全球已有超过80%的企业级系统采用双因素认证作为基础防护。但传统方案往往让运维新手望而却步——直到Google Authenticator遇上SSH&…...

抛弃Keil吧!用Clion调试STM32的5个高效技巧(HAL库实战)

抛弃Keil吧&#xff01;用Clion调试STM32的5个高效技巧&#xff08;HAL库实战&#xff09; 从Keil切换到Clion开发STM32&#xff0c;就像从手动挡升级到自动驾驶——代码补全、智能重构和跨平台支持带来的效率提升&#xff0c;能让开发者更专注于逻辑实现而非工具折腾。本文将…...

揭秘Synopsys EDA中的AI黑科技:DSO.ai如何改变传统芯片设计流程

揭秘Synopsys EDA中的AI黑科技&#xff1a;DSO.ai如何重塑芯片设计范式 当芯片制程迈入3纳米时代&#xff0c;单个晶体管尺寸已接近物理极限&#xff0c;设计复杂度却呈指数级增长。传统EDA工具如同手持计算尺的工程师面对摩天大楼蓝图——方法论需要根本性变革。这正是DSO.ai诞…...

TouchGal Galgame社区终极指南:一站式游戏资源管理与交流平台

TouchGal Galgame社区终极指南&#xff1a;一站式游戏资源管理与交流平台 【免费下载链接】kun-touchgal-next TouchGAL是立足于分享快乐的一站式Galgame文化社区, 为Gal爱好者提供一片净土! 项目地址: https://gitcode.com/gh_mirrors/ku/kun-touchgal-next 还在为寻找…...

March7thAssistant智能自动化:星穹铁道游戏效率工具全解析

March7thAssistant智能自动化&#xff1a;星穹铁道游戏效率工具全解析 【免费下载链接】March7thAssistant &#x1f389; 崩坏&#xff1a;星穹铁道全自动 Honkai Star Rail &#x1f389; 项目地址: https://gitcode.com/gh_mirrors/ma/March7thAssistant 在《崩坏&am…...