1.两数之和(Java)

1. 题目描述

LeetCode 1. 两数之和(Two Sum)

给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那两个整数,并返回它们的索引。

示例 1:

输入:nums = [2,7,11,15], target = 9
输出:[0,1]
解释:因为 nums[0] + nums[1] == 9,所以返回 [0, 1]。

示例 2:

输入:nums = [3,2,4], target = 6
输出:[1,2]

示例 3:

输入:nums = [3,3], target = 6
输出:[0,1]

要求:

  • 你可以假设每种输入只会对应一个答案。

  • 但是,数组中同一个元素不能使用两次。

  • 你可以按任意顺序返回答案。


2. 解题思路

方法:哈希表(HashMap)

我们可以使用 哈希表HashMap)来存储数组中已经遍历过的元素及其索引。

思路如下:

  1. 遍历 nums 数组,对于每个元素 nums[i],计算它的补数 target - nums[i]

  2. 检查这个补数是否已经存在于 HashMap 中。

    • 如果存在,说明找到了满足条件的两个数,返回它们的索引。

    • 如果不存在,将 nums[i] 及其索引存入 HashMap,继续遍历。


3. Java 代码实现

class Solution {public int[] twoSum(int[] nums, int target) {Map<Integer, Integer> ma = new HashMap<>();int[] ans = new int[2];for (int i = 0; i < nums.length; i++) {int tmp = target - nums[i];if (ma.containsKey(tmp)) {ans[0] = ma.get(tmp);ans[1] = i;return ans; // 立即返回,避免继续遍历} else {ma.put(nums[i], i);}}return ans; // 题目保证一定有解}
}

4. 复杂度分析

  • 时间复杂度:O(n)

    • 只需遍历数组一次,每次操作(查找和插入 HashMap)都是 O(1) 的时间复杂度。

  • 空间复杂度:O(n)

    • 需要存储 nums 中最多 n 个不同的元素。


5. 总结

  1. 该题目是经典的哈希表应用,利用 HashMap 可以高效查找所需的数值。

  2. 通过 target - nums[i] 计算补数,并在 HashMap 中查找是否存在,可以快速确定答案。

  3. 代码整体逻辑清晰,时间复杂度 O(n),适用于大多数情况。

希望这篇文章能帮助你理解 两数之和(Two Sum) 的解法!

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

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

相关文章

《深入探索 Python 数据分析:用 Pandas 高效处理与可视化大型数据集》

《深入探索 Python 数据分析:用 Pandas 高效处理与可视化大型数据集》 引言:从零到分析高手 数据是当代社会最宝贵的资源,而数据分析技能是现代职业人不可或缺的一部分。在数据科学的领域中,Python 已成为当之无愧的“首选语言”,其强大的生态系统和简洁的语法让人如虎添…

将树莓派5当做Ollama服务器,C#调用generate的API的示例

其实完全没这个必要&#xff0c;性能用脚后跟想都会很差。但基于上一篇文章的成果&#xff0c;来都来了就先简单试试吧。 先来看看这个拼夕夕上五百多块钱能达到的效果&#xff1a; 只要对速度没要求&#xff0c;那感觉就还行。 Ollama默认只在本地回环&#xff08;127.0.0…

python基础学习二(列表及字典的使用)

文章目录 列表列表的创建获取列表中的多个元素判断列表中元素是否存在列表元素的添加操作列表元素的删除操作列表元素的修改列表的排序列表生成式 字典字典的创建字典的常规操作字典的常用操作字典的视图操作字典元素的遍历字典的特点字典的生成式 列表 一个对象由id&#xff0…

Android设计模式之代理模式

一、定义&#xff1a; 为其他对象提供一种代理以控制对这个对象的访问。 二、角色组成&#xff1a; Subject抽象主题&#xff1a;声明真是主题与代理的共同接口方法&#xff0c;可以是一个抽象类或接口。 RealSubject真实主题&#xff1a;定义了代理表示的真实对象&#xff0c…

国外计算机证书推荐(考证)(6 Sigma、AWS、APICS、IIA、Microsoft、Oracle、PMI、Red Hat)

文章目录 证书推荐1. 六西格玛 (6 Sigma)2. 亚马逊网络服务 (AWS)3. 美国生产与库存控制学会 (APICS)4. 内部审计师协会 (IIA)5. 微软 (Microsoft)6. 甲骨文 (Oracle)7. 项目管理协会 (PMI)8. 红帽 (Red Hat) 证书推荐 1. 六西格玛 (6 Sigma) 介绍&#xff1a;六西格玛是一种…

用mkdocs写文档#自动更新github-page

https://wuyisheng.github.io/blog 背景是上一篇博客 使用mkdocs&#xff0c;最后提及可以部署github page。这里说明下怎么自动部署。 当然&#xff0c;这篇博客主要的目的还是提供下github page的链接 &#xff1a;&#xff09; 我是这样做的&#xff1a; step 1: pip3 i…

QT五 文件系统,QFile,QfileInfo

总览 QIODevice&#xff1a;所有 I/O 设备类的父类&#xff0c;提供了字节块读写的通用操作以及基本接口&#xff1b;QFileDevice&#xff1a;Qt5新增加的类&#xff0c;提供了有关文件操作的通用实现。QFlie&#xff1a;访问本地文件或者嵌入资源&#xff1b;QTemporaryFile&a…

EF Core表达式树

文章目录 前言一、表达式树与委托的区别二、动态构建表达式树示例1示例2示例3高级技巧&#xff1a;表达式合并 三、ExpressionTreeToString安装方法基本用法支持的格式化风格 四、注意事项总结 前言 在 Entity Framework Core 中&#xff0c;表达式树&#xff08;Expression T…

NVM安装速通使用手册(Windows版)NVM管理node版本命令手册 NVM使用手册

nvm&#xff08;Node Version Manager&#xff09;是一个用于管理Node.js版本的命令行工具。通过nvm&#xff0c;你可以在同一台机器上安装和切换多个Node.js版本&#xff0c;非常适合开发和测试在不同Node.js版本上运行的应用程序 一、安装地址 1. 官方下载&#xff1a; &…

vLLM命令行使用方法详解

vLLM 是一个针对大语言模型(LLMs)优化的高效推理和服务库。以下是 vLLM 命令行工具的详细使用方法解析,涵盖常见场景和参数配置: 一、核心命令行工具 vLLM 提供两个主要的命令行入口: 启动 API 服务器 用于部署 HTTP/OpenAI 兼容的 API 服务: python -m vllm.entrypoint…

# 基于 OpenCV 的选择题自动批改系统实现

在教育领域&#xff0c;选择题的批改工作通常较为繁琐且重复性高。为了提高批改效率&#xff0c;我们可以利用计算机视觉技术&#xff0c;通过 OpenCV 实现选择题的自动批改。本文将详细介绍如何使用 Python 和 OpenCV 实现一个简单的选择题自动批改系统。 1. 项目背景 选择题…

python黑科技:无痛修改第三方库源码

需求不符合 很多时候&#xff0c;我们下载的 第三方库 是不会有需求不满足的情况&#xff0c;但也有极少的情况&#xff0c;第三方库 没有兼顾到需求&#xff0c;导致开发者无法实现相关功能。 如何通过一些操作将 第三方库 源码进行修改&#xff0c;是我们将要遇到的一个难点…

第十三章:优化内存管理_《C++性能优化指南》_notes

优化内存管理 一、内存管理基础概念二、自定义分配器三、智能指针优化重点知识代码示例&#xff1a;智能指针性能对比 四、性能优化关键点总结多选题设计题答案与详解多选题答案设计题示例答案&#xff08;第1题&#xff09; 一、内存管理基础概念 重点知识 动态内存分配开销…

python笔记之函数

函数初探 python在要写出函数很简单&#xff0c;通过关键字def即可写出&#xff0c;简单示例如下 def add(a, b):return ab 以上即可以定义出一个简单的函数&#xff1a;接收两个变量a和b&#xff0c;返回a和b相加的结果&#xff0c;当然这么说也不全对&#xff0c;原因就是…

【服务器操作指南 - GPU 使用与文件传输】轻松掌握 GPU 状态查看和服务器文件传输技巧

0. 引言 在使用服务器时&#xff0c;高效管理 GPU 和文件传输是两项不可或缺的技能。 本指南旨在帮助您快速掌握服务器环境下的 GPU 使用状态监测方法&#xff0c;并简要介绍如何在服务器之间进行文件传输操作。 1. 查看服务器上的 gpu 使用状态 1.1 安装 gpustat 这条指令…

0330-YYYY-MM-DD格式日期比较大小

最简单的&#xff08;python&#xff09; from datetime import datetime def compare_time(time1,time2): time1_t datetime.strptime(time1,“%Y-%m-%d”) time2_t datetime.strptime(time2,“%Y-%m-%d”) if time1_t < time2_t: return time1_t elif time1_t > ti…

QFlightInstruments飞行仪表控件库

QFlightInstruments 是一个开源的飞行仪表控件库&#xff0c;专为基于 Qt 的应用程序设计。它提供了一系列仿真实飞机仪表的组件&#xff0c;适用于飞行模拟软件、航空电子系统或任何需要高仿真飞行仪表显示的项目。 主要功能 高仿真飞行仪表&#xff1a;包括空速表、高度表、…

VSCode 市场发现恶意扩展正在传播勒索软件!

在VSCode 市场中发现了两个隐藏着勒索软件的恶意扩展。其中一个于去年 10 月出现在微软商店&#xff0c;但很长时间没有引起注意。 这些是扩展ahban.shiba 和 ahban.cychelloworld&#xff0c;目前已从商店中删除。 此外&#xff0c;ahban.cychelloworld 扩展于 2024 年 10 月…

国信华源携AI+水利创新成果亮相第十五届防汛抗旱信息化技术交流会

直击展会现场 近日&#xff0c;以“人工智能赋能防汛抗旱 融合创新共御极端灾害”为主题的第十五届防汛抗旱信息化技术交流会在河南郑州召开。作为水旱灾害防御领域的专精企业&#xff0c;北京国信华源科技有限公司携自主研发的入户叫应预警系统及覆盖防汛抗旱全链条的智慧化场…

MATLAB语言的链表反转

MATLAB语言的链表反转 链表是一种常见的数据结构&#xff0c;与数组相比&#xff0c;链表在插入和删除操作方面具有更高的灵活性。然而&#xff0c;链表的一些操作&#xff0c;比如反转链表&#xff0c;对一些初学者来说可能是一个挑战。本篇文章将重点讨论如何使用MATLAB语言…