Day1:基础入门·两数之和(LeetCode 1)

题目描述

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

注意:你可以假设每种输入只会对应一个答案。但是,数组中同一个元素在答案里不能重复出现。你可以按任意顺序返回答案。

示例:输入:nums = 2,7,11,15, target = 9 → 输出:0,1(解释:因为 nums0 + nums1 = 2 + 7 = 9)

解题思路

核心思路:利用哈希表(HashMap)的查询优势,减少时间复杂度。

  1. 遍历数组,对于每个元素 numsi,计算其补数(target - numsi);

  2. 检查哈希表中是否存在该补数:若存在,直接返回补数的下标和当前下标 i;若不存在,将当前元素 numsi 和其下标 i 存入哈希表;

  3. 遍历结束后,必能找到唯一答案(题目保证每种输入对应一个答案)。

复杂度分析:时间复杂度 O(n)(仅遍历一次数组),空间复杂度 O(n)(哈希表最多存储 n 个元素)。

相关推荐
wabs6668 分钟前
关于图论【卡码网108.多余的边的思考】
数据结构·算法·图论
三克的油19 分钟前
数据结构-5
数据结构
冻柠檬飞冰走茶37 分钟前
PTA基础编程题目集 7-37 整数分解为若干项之和(C语言实现)
c语言·开发语言·数据结构·算法
long31638 分钟前
PostgreSQL 学习资料 · 入门 / 练习 / 精通 / 扩展
java·数据结构·数据库·spring boot·sql·postgresql·数据库开发
运维大师1 小时前
【K8S 运维实战】31-Helm包管理
运维·算法·kubernetes
烬羽1 小时前
一个队列,怎么让滑动窗口从 O(nk) 变 O(n)?单调队列彻底搞懂
javascript·数据结构·算法
XH华1 小时前
C++语言第四章:模板初阶
数据结构·c++·算法
纳兰青华1 小时前
拼图大师:从“暴力尝试“到“动态规划“的拆字艺术
java·算法·动态规划
星马梦缘1 小时前
算法设计导论 课堂笔记
算法·动态规划·分治·时间复杂度·最优二叉树
luj_176812 小时前
星火科技助力边远地区防病攻坚
c语言·开发语言·c++·经验分享·算法