
Leetcode|1. 两数之和【笔记】
发布日期:2021-05-24 01:21:24
浏览次数:40
分类:精选文章
本文共 1461 字,大约阅读时间需要 4 分钟。
两数之和
题目
给定一个整数数组 nums
和一个整数 target
,请你在该数组中找出和为 target
的那两个整数,并返回它们的数组下标。同一个元素不能使用两遍。你可以按任意顺序返回答案。
示例
-
示例1:
- 输入:nums = [2, 7, 11, 15], target = 9
- 输出:[0, 1]
-
示例2:
- 输入:nums = [3, 2, 4], target = 6
- 输出:[1, 2]
-
示例3:
- 输入:nums = [3, 3], target = 6
- 输出:[0, 1]
思路
方法一:两层循环
初步想法:寻找两个数,它们的和等于目标值。这让我想到可以使用两层循环分别遍历所有可能的数对。
实现步骤:
- 外层循环遍历数组中的每一个整数作为第一个数,索引为
i
。 - 内层循环遍历数组中的每一个整数作为第二个数,索引为
j
,且j
必须大于i
(确保不重复)。 - 检查两个数的和是否等于目标值。如果相等,将这两个数的索引存储起来返回。
优点:简单易懂,代码实现容易,时间复杂度为 O(n²),适用于小量数据的情况。
方法二:字典(哈希表)
初步想法:为了提高效率,我们可以使用哈希表来存储数值及其对应的索引,这样可以在 O(1) 时间内查找是否存在对应的值。
实现步骤:
- 初始化一个空字典。
- 遍历数组中的每一个数。
- 对于每个数
num
,计算target - num
,检查字典中是否存在这个值作为键。 - 如果存在,说明找到两个数,一个是
num
,另一个是字典中对应值的数,返回它们的索引。 - 如果不存在,将当前数作为键,值为索引存入字典。
优点:时间复杂度为 O(n),非常高效,适用于大量数据。字典的查询速度快,使得整体代码更高效。
代码实现
方法一: 两层循环
class Solution: def twoSum(self, nums: List[int], target: int) -> List[int]: n = len(nums) s = [0, 1] # 结果数组,存储两个索引 for i in range(n): for j in range(i + 1, n): if nums[i] + nums[j] == target: s[0], s[1] = i, j return s return [] # 如果没有找到
方法二: 字典实现
class Solution: def twoSum(self, nums: List[int], target: int) -> List[int]: h = {} for i, num in enumerate(nums): complement = target - num if complement in h: return [h[complement], i] h[num] = i return [] # 如果没有找到
总结
两种方法各有优劣。两层循环简单直观,适合小数组;哈希表法高效,适合大数据量。无论采用哪种方法,核心目标都是高效地找到两个数,使其和等于目标值。
发表评论
最新留言
初次前来,多多关照!
[***.217.46.12]2025年04月26日 17时33分27秒
关于作者

喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
遇到问题之-yum update无法连接镜像问题解决
2019-03-15
遇到问题之-httpd服务启动报错182行错误
2019-03-15
pycharm如何设置(错误、警告类的标准提醒)
2019-03-15
PHP是世界上最好的语言?Phython第一个不服
2019-03-15
Bugku CTF-web6
2019-03-15
Bugku CTF-web10 头等舱
2019-03-15
UML-配置图
2019-03-15
JS高级面向对象(二)-构造函数和原型
2019-03-15
python入门到秃顶(10):异常
2019-03-15
ES6_变量生明
2019-03-15
考研复试英语问答
2019-03-15
百度背景换肤案例
2019-03-15
修改ng-zorro中table对齐及宽度等细节
2019-03-15
输出对象的值——踩坑
2019-03-15
angular2项目里使用排他思想
2019-03-15
折线图上放面积并隐藏XY轴的线
2019-03-15
failed to push some refs to git
2019-03-15
在苹果Mac上如何更改AirDrop名称?
2019-03-15
1110 Complete Binary Tree (25 point(s))
2019-03-15