leetcode 刷题记:1.two-sum
这是 leetcode 的第一道题目。
问题描述
给定一个整数数组 nums
和一个整数目标值 target
,请你在该数组中找出和为目标值的那两个整数,并返回它们的数组下标。
1 |
|
解题思路
这道题是要放回两个加数在数组中的下标,而且肯定能在数组中找到答案。
方法一
可以使用双层循环的方式来暴力求解,这样的时间复杂度就是$O(n^2)$。
代码:
1 |
|
方法二
有没有更好的方式?先看看里面最简单的数学问题
$$
x+y=target
$$
其中$x$和$y$是nums
中的元素,target
已知,那如果我们用个 HashMap 保存已经遍历过的元素$x$与target
的差$y$作为key
,value
中存元素$x$的下标,只要找到剩下的数组中存在$y$,就能返回两者的下标了。
代码:
1 |
|
如此,我们就能只要遍历一次数组,就能得到想要的结果,时间复杂度就只有$O(n)$。
如果不想使用Map
,使用Object
也行。据说以前没有Map
的时候,Object
经常拿来当hashmap
用。
1 |
|
leetcode 刷题记:1.two-sum
https://bubao.github.io/posts/265bf3b6.html