文章目录
- 算法
- 两数之和
算法
两数之和
题目如下图:
我的答案如下图:
我采用的是最笨的思路,直接暴力的两次循环,第一次外循环是取数组的第一个元素,然后内循环会遍历数组后面除第一个的所有元素,然后和第一个元素相加,看看结果是否为目标值,如果是的话,就证明i和j就是我们所求的下标,接下来,我们就直接把i和j放到数组里面就行了。直接return。
我循环是从第一个元素取到倒数第二个元素,比如我们一共有max个元素,当前外循环取的是第n个元素,那么内循环就要循环从n+1到max的所有元素,都和第n个元素加一遍。
但是我用的方法太过于暴力了,时间复杂度为O(n^2)。那么有没有高效一点的,时间复杂度低一点的解法,有的,可以使用哈希映射这是我在评论区看到的解法,确实比我的解法要好,代码如下图:
可以发现这种解法循环的时间复杂度为O(n),要比上面的那种暴力解法有效率的多。所以解题的时候有时候借助map哈希映射会变得非常有效率。
注意怎么看时间复杂度,其实就是看你循环的层数的乘积,比如你是两层循环那么你就是O(n^2)。这里其实是使用map哈希映射代替了一层内循环。非常nice。