题目
Given an array of integers, return indices of the two numbers such that they add up to a specific target.
You may assume that each input would have exactly one solution, and you may not use the same element twice.
Example:Given nums = [2, 7, 11, 15], target = 9,Because nums[0] + nums[1] = 2 + 7 = 9,return [0, 1].
分析
给一个数组和一个整数,返回数组中和恰好等于这个整数的两个数组的位置
自己就只想出来了从前向后遍历的方法,时间复杂度$O(n^2)$
代码如下
代码
|
改进
看了solution才知道这道题正确的打开方式是用hash_map,可以先把数组中的元素存入hash_map中,这样就可以实现O(1)复杂度的按值查找了。
不过还有更好的方式,就是采用边查找边插入的方式,代码如下:
|
这样在查找指定值元素的时候就可以有$O(1)$的复杂度了,遍历的复杂度是$O(n)$,总的复杂度是$O(n)$
结果