文章图片
给定一个整数数组 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 是数组中的元素数量 。 主要为哈希表的开销 。
【算法|算法:两数之和】好兄弟可以点赞并关注我 , 全部都是干货 。
- 本文转自:中科院之声中国科学院国家空间科学中心复杂航天系统电子信息技术院重点实验室先进测...|临近空间大气密度反演算法的研究获进展
- 算法|弘辽科技:抖音橱窗怎么选择商品类目?怎么运营?
- 算法|挺好的!荣耀70系列正式发布,2699元起
- 飞利浦·斯塔克|量子计算是否会因为量子算法开发而提速?
- 算法|长虹佳华突然代理中国大陆Switch,腾讯和任天堂之间怎么了?
- 算法|“路由器”附近,这2样东西千万不要放,难怪百兆光纤变“龟速”
- 算法|网站优化之武侠乾坤大挪移
- 算法|程序员都应该精通的六种算法,你会了吗?
- 生命探测仪|他的算法大幅提升了生命探测速度
- 算法|36氪首发 | 构建AI脑科学诊疗平台,「同心智医」获亿元融资