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

leetcode两数、三数、四数之和

如有错误,感谢不吝赐教、交流

文章目录

  • 两数之和
    • 题目
    • 方法一:暴力两重循环(不可取)
    • 方法二:HashMap空间换时间
  • 三数之和
    • 题目
    • 方法一:当然是暴力破解啦
    • 方法二:同两数之和的原理,借助HashMap和HashSet实现
  • 四数之和

两数之和

题目

给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 target 的那 两个 整数,并返回它们的数组下标。
你可以假设每种输入只会对应一个答案。但是,数组中同一个元素在答案里不能重复出现。
你可以按任意顺序返回答案。

方法一:暴力两重循环(不可取)

方法二:HashMap空间换时间

借助HashMap实现,如下图示例
在这里插入图片描述

public int[] twoSum(int[] nums, int target) {HashMap<Integer, Integer> map = new HashMap<>();map.put(target - nums[0], 0);int res [] = new int[2];for (int i = 1; i < nums.length; i++) {Integer index = map.get(nums[i]);if (index != null) {res[0] = (int) index;res[1] = i;break;} else {map.put(target - nums[i], i);}}return res;}

三数之和

题目

给你一个整数数组 nums ,判断是否存在三元组 [nums[i], nums[j], nums[k]] 满足 i != j、i != k 且 j != k ,同时还满足 nums[i] + nums[j] + nums[k] == 0 。请

你返回所有和为 0 且不重复的三元组。

注意:答案中不可以包含重复的三元组。 这里尤其注意一下,不能包含重复的三元组(借助HashSet实现比较简单,不过有点费时间和空间)

方法一:当然是暴力破解啦

直接使用三重for循环暴力破解,太费时间,不可取。

方法二:同两数之和的原理,借助HashMap和HashSet实现

要求是三个数之和,这里将其中一个数保存到HashMap中,再使用双重for循环遍历,即可获得三个数的答案
原理是和两数之和的原理一样。
这里需要注意,会出现重复的组合结果,如[0, 0,0,0],可能得组合就有[0,0,0], [0,0,0], [0,0,0]
显然这里重复了,于是使用HashSet去重。

// 先对nums排序Arrays.sort(nums);HashMap<Integer, Integer> map = new HashMap<>();HashSet<List<Integer>> hashSet = new HashSet<>();map.put(-nums[0], 1);for (int i = 1; i < nums.length - 1; i++) {for (int j = i + 1; j < nums.length; j++) {int i1 = nums[i] + nums[j];Integer map_val = map.get(i1);if (map_val != null) {List<Integer> integers = new ArrayList<>();integers.add(-i1);integers.add(nums[i]);integers.add(nums[j]);hashSet.add(integers);}}map.put(-nums[i], 1);}List<List<Integer>> lists = new ArrayList<>(hashSet);return lists;

四数之和

方法原理和上面一样,借助HashMap和三重for循环实现

ps:计划每日更新一篇博客,今日2023-04-22,日更第六天,昨日更新:LeetCode6_N字形变换

相关文章:

leetcode两数、三数、四数之和

如有错误&#xff0c;感谢不吝赐教、交流 文章目录 两数之和题目方法一&#xff1a;暴力两重循环&#xff08;不可取&#xff09;方法二&#xff1a;HashMap空间换时间 三数之和题目方法一&#xff1a;当然是暴力破解啦方法二&#xff1a;同两数之和的原理&#xff0c;借助Has…...

使用Docker部署wikitten个人知识库

使用Docker部署wikitten个人知识库 一、wikitten介绍1.wikitten简介2.wikitten特点 二、本地实践环境介绍三、本地环境检查1.检查Docker服务状态2.检查Docker版本 四、部署wikitten个人知识库1.创建数据目录2.下载wikitten镜像3.创建wikitten容器4.查看wikitten容器状态5.检查w…...

【MYSQL】Java的JDBC编程(idea连接数据库)

1. 配置 &#xff08;1&#xff09;新建一个项目 &#xff08;2&#xff09;Build System 那里选择Maven,下一步Create &#xff08;3&#xff09;配置pom.xml文件 首先查看自己的MYSQL版本&#xff1a;进入MySQL命令窗口 我的MYSQL版本是8.0版本的. 下一步&#xff0c;…...

机器学习——主成分分析法(PCA)概念公式及应用python实现

机器学习——主成分分析法&#xff08;PCA&#xff09; 文章目录 机器学习——主成分分析法&#xff08;PCA&#xff09;一、主成分分析的概念二、主成分分析的步骤三、主成分分析PCA的简单实现四、手写体识别数字降维 一、主成分分析的概念 主成分分析&#xff08;PCA&#x…...

手写axios源码系列二:创建axios函数对象

文章目录 一、模块化目录介绍二、创建 axios 函数对象1、创建 axios.js 文件2、创建 defaults.js 文件3、创建 _Axios.js 文件4、总结 当前篇章正式进入手写 axios 源码系列&#xff0c;我们要真枪实弹的开始写代码了。 因为 axios 源码的代码量比较庞大&#xff0c;所以我们这…...

HTB-Time

HTB-Time 信息收集80端口 立足pericles -> root 信息收集 80端口 有两个功能&#xff0c;一个是美化JSON数据。 一个是验证JSON&#xff0c;并且输入{“abc”:“abc”}之类的会出现报错。 Validation failed: Unhandled Java exception: com.fasterxml.jackson.core.JsonPa…...

零基础C/C++开发到底要学什么?

作者&#xff1a;黑马程序员 链接&#xff1a;https://www.zhihu.com/question/597037176/answer/2999707086 先和我一起看看&#xff0c;C/C学完了可以做什么&#xff1a; 软件工程师&#xff1a;负责设计、开发、测试和维护各类型的软件应用程序&#xff1b;游戏开发&#x…...

OpenStack中的CPU与内存超分详解

目录 什么是超分 CPU超分 查看虚拟机虚拟CPU运行在哪些物理CPU上 内存超分 内存预留 内存共享 如何设置内存预留和内存共享 全局设置 临时设置 什么是超分 超分通常指的是CPU或者GPU的分区或者分割&#xff0c;以在一个物理CPU或GPU内模拟多个逻辑CPU或GPU的功能。这…...

main.m文件解析--@autoreleasepool和UIApplicationMain

iOS 程序入口UIApplicationMain详解&#xff0c;相信大家新建一个工程的时候都会看到一个main.m文件&#xff0c;只不过我们很少了解它&#xff0c;现在我们分析一下它的作用是什么&#xff1f; 一、main.m文件 int main(int argc, char * argv[]) {autoreleasepool {return …...

C语言复习之顺序表(十五)

&#x1f4d6;作者介绍&#xff1a;22级树莓人&#xff08;计算机专业&#xff09;&#xff0c;热爱编程&#xff1c;目前在c阶段>——目标C、Windows&#xff0c;MySQL&#xff0c;Qt&#xff0c;数据结构与算法&#xff0c;Linux&#xff0c;多线程&#xff0c;会持续分享…...

学系统集成项目管理工程师(中项)系列10_立项管理

1. 系统集成项目管理至关重要的一个环节 2. 重点在于是否要启动一个项目&#xff0c;并为其提供相应的预算支持 3. 项目建议 3.1. Request for Proposal, RFP 3.2. 立项申请 3.3. 项目建设单位向上级主管部门提交的项目申请文件&#xff0c;是对拟建项目提出的总体设想 3…...

电视盒子哪个好?数码小编盘点2023电视盒子排行榜

随着网络剧的热播&#xff0c;电视机又再度受宠&#xff0c;电视盒子也成为不可缺少的小家电。但面对复杂的参数和品牌型号&#xff0c;挑选时不知道电视盒子哪款最好&#xff0c;小编根据销量和用户评价整理半个月后盘点了电视盒子排行榜前五&#xff0c;对电视盒子哪个好感兴…...

flink动态表的概念详解

目录 前言&#x1f6a9; 动态表和持续不断查询 stream转化成表 连续查询 查询限制 表转化为流 前言&#x1f6a9; 传统的数据库SQL和实时SQL处理的差别还是很大的&#xff0c;这里简单列出一些区别&#xff1a; 尽管存在这些差异&#xff0c;但使用关系查询和SQL处理流并…...

ArcGIS Pro用户界面

目录 1 功能区 1.1 快速访问工具栏 1.2 自定义快速访问工具栏 1.3 自定义功能区选项 1.3.1 添加组和命令 1.3.2 添加新选项卡 2 视图 3 用户界面排列 ​编辑 4 窗格 4.1 内容窗格 4.2 目录窗格 4.3 目录视图&#xff08;类似ArcCatalog&#xff09; 4.4 浏览对话框…...

HDCTF 2023 Pwn WriteUp

Index 前言Pwnner分析EXP: KEEP_ON分析EXP: Minions分析EXP: 后记&#xff1a; 前言 本人是菜狗&#xff0c;比赛的时候只做出来1题&#xff0c;2题有思路但是不会&#xff0c;还是太菜了。 栈迁移还是不会&#xff0c;但又都是栈迁移的题&#xff0c;真头大。得找时间好好学学…...

【 Spring 事务 】

文章目录 一、为什么需要事务(简单回顾)二、MySQL 中的事务使⽤三、Spring 中事务的实现3.1 Spring 编程式事务(手动事务)3.2 Spring 声明式事务(自动事务)3.2.1 Transactional 作⽤范围3.2.2 Transactional 参数说明3.2.3 Transactional 不进行事务回滚的情况3.2.4 Transactio…...

【刷题之路】LeetCode 203. 移除链表元素

【刷题之路】LeetCode 203. 移除链表元素 一、题目描述二、解题1、方法1——在原链表上动刀子1.1、思路分析1.2、代码实现 2、方法2——使用额外的链表2.1、思路分析2.2、代码实现 一、题目描述 原题连接&#xff1a; 203. 移除链表元素 题目描述&#xff1a; 给你一个链表的…...

关于Open Shift(OKD) 中 用户认证、权限管理、SCC 管理的一些笔记

写在前面 因为参加考试&#xff0c;会陆续分享一些 OpenShift 的笔记博文内容为 openshift 用户认证和权限管理以及 scc 管理相关笔记学习环境为 openshift v3 的版本&#xff0c;有些旧这里如果专门学习 openshift &#xff0c;建议学习 v4 版本理解不足小伙伴帮忙指正 对每个…...

活动文章测试(勿删)

大家好&#xff01; 我是CSDN官方博客&#xff01; 恭喜你正式加入CSDN博客&#xff0c;迈上技术成神之路~~ 路漫漫其修远兮——身为技术人&#xff0c;求索之路道阻且艰&#xff0c;但一万次的翘首却比不过一次的前行。 现在&#xff0c;就来开启你的个人博客&#xff0c;发布…...

Windows下 批量重命名文件【bat实现】

目录 前言 一、Windows简单实现重命名 二、使用命令行和Excel实现重命名 前言 在实际应用中&#xff0c;我们经常会遇到将指定文件夹下的文件重命名&#xff0c;以便程序读写。 本文介绍了两种方式&#xff0c;都是在Windows系统中自带的重命名方式。 一、Windows简单实现…...

复杂干扰下考虑异质性的非机动车微观行为建模与仿真【附仿真】

✨ 长期致力于非机动车微观交通行为、异质性、感知—决策—行动三阶段、社会力模型、模糊逻辑研究工作&#xff0c;擅长数据搜集与处理、建模仿真、程序编写、仿真设计。 ✅ 专业定制毕设、代码 ✅ 如需沟通交流&#xff0c;点击《获取方式》 &#xff08;1&#xff09;非机动车…...

从硬复位到裸机运行:一张图看懂ZYNQ7000系列启动全流程(附Stage0/1/2详细解析)

从硬复位到裸机运行&#xff1a;ZYNQ7000启动全流程深度解析 当一块ZYNQ7000芯片首次通电时&#xff0c;内部究竟发生了什么&#xff1f;这个看似简单的上电过程&#xff0c;实际上隐藏着一套精密的启动机制。对于FPGA/SOC开发者而言&#xff0c;理解这套机制不仅是掌握ZYNQ开发…...

DownKyi跨平台版终极指南:B站视频下载与音视频分离完整教程

DownKyi跨平台版终极指南&#xff1a;B站视频下载与音视频分离完整教程 【免费下载链接】downkyicore 哔哩下载姬(跨平台版)downkyi&#xff0c;哔哩哔哩网站视频下载工具&#xff0c;支持批量下载&#xff0c;支持8K、HDR、杜比视界&#xff0c;提供工具箱&#xff08;音视频提…...

机器学习之逻辑回归算法

一、逻辑回归简介 1. 定义 逻辑回归&#xff08;Logistic Regression&#xff09;是一种有监督学习算法&#xff0c;主要用于解决二分类问题的统计学习方法。尽管名字中带有“回归”&#xff0c;但它实际上是一种分类算法。 大白话解释 逻辑回归就是一种“做判断题”的算法&…...

ARMv8-A架构VDISR_EL3与VSESR_EL2寄存器解析

1. AArch64系统寄存器概述在ARMv8-A架构中&#xff0c;系统寄存器是处理器状态和功能控制的核心组件。它们分布在不同的异常级别(EL0-EL3)&#xff0c;每个级别都有特定的访问权限和功能定位。作为芯片级开发者&#xff0c;理解这些寄存器的细节对构建稳定可靠的系统至关重要。…...

JWT密钥轮换缺陷与零停机热修复实战指南

1. 这不是一次普通升级&#xff0c;而是一次密钥信任体系的临界点崩塌Seedance2.0 v2.0.3发布不到72小时&#xff0c;我在给客户做例行安全巡检时&#xff0c;发现一个反直觉的现象&#xff1a;所有新签发的JWT令牌在旧版本客户端&#xff08;v2.0.2&#xff09;上验证失败&…...

Linux 硬盘分区管理

Linux 硬盘分区管理 摘要&#xff1a;本文系统介绍了 Linux 硬盘分区管理的核心概念与实用工具。首先阐述了硬盘分区的必要性&#xff0c;包括数据隔离、分类整理、降低风险等。随后详细对比了 MBR&#xff08;主引导记录&#xff09;和 GPT&#xff08;GUID 分区表&#xff09…...

离散几何拓扑数论(终稿·全定义完整版一)

离散几何拓扑数论&#xff08;终稿全定义完整版&#xff09; 作者&#xff1a;乖乖数学 日期&#xff1a;2026 年 5 月 21 日 体系&#xff1a;离散几何拓扑数论&#xff08; Discrete Geometric Topological Number Theory&#xff09;...

[智能体-7]:业务数据序列化为 JSON 字符串 完整示例

一、概念序列化&#xff1a;把程序里的对象 / 字典 / 实体数据 → 转换成JSON 格式字符串&#xff0c;用于网络传输、接口请求、存储。反序列化&#xff1a;JSON 字符串 → 还原成程序可直接使用的数据对象。二、Python 示例&#xff08;最常用&#xff0c;对接 OpenAI / 大模型…...

Postgresql基础实践教程(二)

十三、查询会员的预订开始时间 题目 如何列出名为"David Farrell"的会员的所有预订开始时间? 预期结果 starttime 2012-09-18 09:00:00 2012-09-18 17:30:00 2012-09-18 13:30:00 2012-09-18 20:00:00 2012-09-19 09:30:00 2012-09-19 15:00:00 2012-09-19 12:00:…...