news 2026/9/3 8:25:31

力扣HOT100[特殊字符]零基础刷题与解析 1.两数之和

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
力扣HOT100[特殊字符]零基础刷题与解析 1.两数之和

一、题目

二、解题

思路:

  1. 遍历数组,用字典记录数值对应的索引
  2. 对当前数字num,计算需要配对的数target - num
  3. 如果配对数已经存在字典中,直接返回两个下标
  4. 不存在就把当前数字和下标存入字典

1、完整代码

class Solution(object): def twoSum(self, nums, target): """ :type nums: List[int] :type target: int :rtype: List[int] """ hash_map = {} for idx, num in enumerate(nums): another = target - num if another in hash_map: return [hash_map[another], idx] hash_map[num] = idx return []

2.逐行代码解释

# 定义类 Solution,LeetCode 固定模板要求 class Solution(object): # 定义方法 twoSum,self 代表类实例,接收两个参数 nums数组、target目标和 def twoSum(self, nums, target): """ :type nums: List[int] # 注释:nums 是整数列表 :type target: int # 注释:target 是整数 :rtype: List[int] # 注释:函数返回整数列表(两个下标) """ # 创建空字典 hash_map,作用:存储「数组数字:对应下标」,用来快速查找 hash_map = {} # enumerate 同时遍历下标idx和对应数值num,逐个取数组元素 for idx, num in enumerate(nums): # 计算配对需要的另一个数:目标和 - 当前数字 another = target - num # 判断需要的另一半数字是否已经存在字典里(也就是前面遍历过) if another in hash_map: # 存在就直接返回 [另一半数字的下标, 当前数字下标] return [hash_map[another], idx] # 另一半不存在,把当前数字和它的下标存入字典,供后面数字匹配 hash_map[num] = idx # 题目说明输入一定存在唯一解,代码永远走不到这里,兜底返回空列表 return []

3、逐行代码解析(零基础,比较详细)

class Solution(object):
  • class:Python 关键字,用来创建一个类(可以理解为一个代码盒子,专门装解题函数)
  • Solution:自定义类的名字,LeetCode 强制规定必须叫这个,不能改
  • (object):代表这个类继承 Python 最基础的通用对象,Python2/3 刷题模板固定写法,照抄就行
  • :冒号:只要写 class、def、for、if,末尾必须加冒号,代表下面缩进的代码都属于这个类
def twoSum(self, nums, target):
  • def:关键字,定义函数 / 方法
  • twoSum:函数名,题目固定函数名,不能修改
  • 括号里三个参数:
    • self:类方法必备第一个参数,代表这个类自己,LeetCode 模板强制要写,固定放第一位
    • nums:外部传进来的参数,是输入的数字数组,比如[2,7,11,15]
    • target:外部传进来的目标数字,比如9
  • ::冒号,下面缩进代码都属于这个函数
""" :type nums: List[int] :type target: int :rtype: List[int] """
  • """ 内容 """:多行字符串注释,不执行,只给人看
  • :type nums: List[int]:说明参数 nums 是整数列表
  • :type target: int:说明参数 target 是整数
  • :rtype: List[int]:说明这个函数最后要返回一个整数列表(两个下标)
hash_map = {}
  • hash_map:自定义变量名,随便取名,这里用字典存数字和下标
  • =:赋值符号,把右边东西放进左边变量
  • {}:空字典,字典格式{键:值},我们这里存数字:下标示例:{2:0}代表数字 2 出现在下标 0 的位置
for idx, num in enumerate(nums):
  • for:循环关键字,挨个取出数组里每一个元素
  • enumerate():Python 内置函数,专门同时取出下标 + 对应数字例:nums=[2,7],enumerate 会依次拿出 (0,2)、(1,7)
  • idx, num:一次性接收 enumerate 给的两个值
    • idx:当前数字的下标(0、1、2...)
    • num:当前遍历到的数字
  • in:关键字,代表遍历 nums 里面每一个内容
  • ::冒号,下一行缩进代码属于循环体
another = target - num
  • target - num:数学减法,算出我们需要找的另一个数字例:target=9,当前 num=2,another=7
  • another:变量,保存需要配对的数字
if another in hash_map:
  • if:判断关键字,满足条件就执行下面缩进代码
  • another in hash_map:判断语句in检查左边的数字是不是字典里已经存过(前面循环见过这个数)
  • ::冒号,下一行缩进代码是 if 成立时执行的内容
return [hash_map[another], idx]
  • return:关键字,直接结束整个函数,把后面的数据返回出去
  • []:列表,存放两个下标,题目要求返回列表格式
  • hash_map[another]:字典取值语法,字典[键],取出 another 对应的下标
  • idx:当前循环数字的下标
hash_map[num] = idx
  • 字典赋值语法:字典[键] = 值
  • 把当前数字 num 作为键,下标 idx 作为值存入字典
  • 顺序很关键:先判断、再存入,避免同一个数字自己和自己配对
return []
  • 循环全部走完还没找到就返回空列表[]
  • 题目保证一定存在解,这行代码永远不会运行,只是兜底
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/3 8:24:16

用Python分析乒乓球赛事数据:从pandas清洗到可视化报表

如果你平时喜欢看乒乓球比赛,应该会留意到,赛后球迷最想看的除了冠军归属,还有选手一路晋级的轨迹:从八强到四强,从半决赛到决赛,每一场的比分、用时、对阵关系都值得回味。近期横滨冠军赛男单决赛中&#…

作者头像 李华
网站建设 2026/9/3 8:22:12

高通CamX相机框架源码解析:从架构设计到开发调试实战

简介:本资源为高通Camera Camx架构官方级源码仓库完整镜像,面向Android系统工程师、相机算法开发者及嵌入式图像处理研究人员,用于深度理解骁龙平台相机HAL层设计、图像流水线调度与硬件协同机制。压缩包含763个文件,主体为358个头…

作者头像 李华
网站建设 2026/9/3 8:17:27

骨传导耳机技术解析:游泳专用骨聆ProfitX W80深度评测

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/9/3 8:16:59

风电光伏概率潮流计算:蒙特卡洛法在IEEE33节点系统中的工程实践

简介:本资源是一套面向电力系统专业本科生、研究生及新能源并网分析初学者的MATLAB实践程序,聚焦风电与光伏出力不确定性建模及配电网概率潮流求解这一核心工程问题。资源基于蒙特卡洛随机抽样方法,结合威布尔分布刻画风速特性、光照强度模型…

作者头像 李华