给定一个整数数组 nums
和一个目标值 target
,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标。
你可以假设每种输入只会对应一个答案。但是,你不能重复利用这个数组中同样的元素。
示例:
1 |
|
解决:
方法一:暴力破解法
- 外循环遍历数组的每一个数 x
- 内循环中则查找与 target-x 相等的元素
- 最后返回内外循环中对应元素的索引值
- 时间复杂度: O(n^2)
- 空间复杂度: O(1)
1 |
|
方法二:两遍哈希表
- 哈希表是将空间换取时间,进行快速查找
- 首先,将数组中每个元素和它的索引值添加到哈希表中
- 然后,在表中查找与 target-num[i] 相等的元素
- 最后,返回查找到元素的索引值
- 时间复杂度: O(n)
- 空间复杂度: O(n)
1 |
|
方法三:一遍哈希表
- 根据两遍哈希表,进行迭代并将元素插入到表中的同时,还会回过头来检查表中是否已经存在当前元素所对应的目标元素。如果存在,则将其返回
- 时间复杂度: O(n)
- 空间复杂度: O(n)
1 |
|