
文章图片

给定一个整数数组 nums 和一个整数目标值 target , 请你在该数组中找出 和为目标值 target 的那 两个 整数 , 并返回它们的数组下标 。
你可以假设每种输入只会对应一个答案 。 但是 , 数组中同一个元素在答案里不能重复出现 。
你可以按任意顺序返回答案 。
示例
- 输入:nums = [271115
target = 9
- 输出:[01
- 解释:因为 nums[0
+ nums[1
== 9, 返回 [0 1
。
当我们使用遍历整个数组的方式寻找 target - x 时 , 需要注意到每一个位于 x 之前的元素都已经和 x 匹配过 , 因此不需要再进行匹配 。 而每一个元素不能被使用两次 , 所以我们只需要在 x 后面的元素中寻找 target - x 。
代码如下:
复杂度分析
- 时间复杂度:O(N^2) , 其中 N 是数组中的元素数量 。 最坏情况下数组中任意两个数都要被匹配一次 。
- 空间复杂度:O(1) 。
使用哈希表 , 可以将寻找 target - x 的时间复杂度降低到从 O(N) 降低到 O(1) 。
这样我们创建一个哈希表 , 对于每一个 x , 我们首先查询哈希表中是否存在 target - x , 然后将 x 插入到哈希表中 , 即可保证不会让 x 和自己匹配 。
代码如下:
复杂度分析
- 时间复杂度:O(N) , 其中 N 是数组中的元素数量 。 对于每一个元素 x , 我们可以 O(1) 地寻找 target - x 。
- 空间复杂度:O(N) , 其中 N 是数组中的元素数量 。 主要为哈希表的开销 。
【算法|算法:两数之和】好兄弟可以点赞并关注我 , 全部都是干货 。
- 社交|腾讯视频为IP编写「价值算法」
- 新书推荐 │ 大数据算法设计与分析
- 算法|75英寸最值得入手的大屏电视,性能画质没得挑
- 算法|“赞奇科技”获得数千万元战略投资
- 中国移动|中国移动新一代超级SIM卡芯片来了:2MB存储、算法翻3倍
- 算法|为什么你只是说了某样东西,手机就会给你推送相关商品?几步教你轻松解决!
- 为了抢用户,Facebook要改算法了
- 算法|侃侃而谈| 为什么视频网站必然走向兼并整合?
- 算法|魅族19官方预热:部分配置曝光,首批渲染图出炉!
- 阿尔茨海默病|机器学习新算法:一次脑扫描就能诊断阿尔茨海默病
