1. 两数之和
题面
给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标。
你可以假设每种输入只会对应一个答案。但是,数组中同一个元素不能使用两遍。
示例
给定 nums = [2, 7, 11, 15], target = 9
因为 nums[0] + nums[1] = 2 + 7 = 9
所以返回 [0, 1]
解析
方法1
暴力循环,
O
(
n
2
)
O(n^2)
O(n2)
O
(
1
)
O(1)
O(1)
方法2
两遍哈希
第一遍存入map(num[i],i)
第二遍遍历时判断target - num[i]是否存在map中
O
(
n
)
O(n)
O(n)
O
(
n
)
O(n)
O(n)
所需的额外空间取决于哈希表中存储的元素数量
方法3
一遍哈希
一边存一边判断
同上
方法4
排序
二分查找
本质是个查找问题。