两数之和
- 给一个整数数组nums和目标值target,找出和为目标值的两个整数的下标
- [2,7,11,15] 9 => [0,1]
思路:
- 使用一个map将遍历过的数字存起来,{key: value}中,key是值,value是下标。
- 每次遍历在map中查找是否有key为
target-nums[i]
的值 - 如果取到,则条件成立,返回
- 如果没有取到,则将当前值为key,下标作为value存入map
js
|
|
java
|
|
三数之和
- nums中存在三个元素a+b+c=0
- [-1,0,1,2,-1,-4] => [[-1,0,1],[-1,-1,2]]
思路
- 首先将数组排序
- 对数组遍历,取当前遍历的数nums[i]为一个基准数,遍历数后面的数组(寻找数组)
- 在寻找数组中设定两个起点,最左侧的left(i+1)和最右侧的right(length-1)
- 判断nums[i]+nums[left]+nums[right]===0,如果成立的话加入结果数组,分别将left和right移动一位
- 结果大于0,right向左移动一位,向结果逼近
- 结果小于0,left向右移动一位,向结果逼近
js
|
|
java
|
|