题目描述
给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标。
你可以假设每种输入只会对应一个答案。但是,数组中同一个元素不能使用两遍。
样例
给定 nums = [2, 7, 11, 15], target = 9
因为 nums[0] + nums[1] = 2 + 7 = 9
所以返回 [0, 1]
算法1
(暴力枚举) $O(n^2)$
思路很简单,二重for循环。
第一重for循环从i = 0开始遍历
第二重for循环从j = i + 1开始遍历,if(nums[i] + nums[j] == target) 则找到答案
算法2
(unordered_map) $O(n)$
明确:
1.unordered_map的插入操作是O(1)
2.count()函数也是O(1)
步骤:
1.从i = 0开始遍历
2.使用count函数查找(target - nums[i])的个数是否大于0 —if(hash.count(target - nums[i]))
3.把当前元素nums[i]放入hash中 —hash[nums[i] = i