题目:
解法一:暴力遍历
两层循环,直接遍历查找数组中是否存在之和为target的两数,存在则输出两个下标,不存在输出空集合;
--------------------------------------------------------------------------------------------------------------------------------
解法二:哈希表
暴力解法的时间复杂度集中于寻找 target - x
位置的过程中,因此,我们需要一种更优秀的方法,能够快速寻找数组中是否存在目标元素。如果存在,我们需要找出它的索引。
使用哈希表,可以将寻找 target - x
的时间复杂度降低到从 O(N) 降低到 O(1)。
首先创建一个哈希表,开始遍历数组,如果未在哈希表中找到target - x
则将x
插入哈希表,找到则输出对应的下标值。
这样做的好处是target - x一定会出现在x值之后,因为算法再插入前就已经在x之前的值中寻找过target - x
,还避免了和自己匹配出现重复数的解。