目录
1.题目
2.思路
2.1穷举法(不推荐)
2.2哈希映射(推荐)
3.代码实现
3.1穷举
3.2哈希表
1.题目
2.思路
2.1穷举法(不推荐)
时间复杂度O(n^2)
思路如下:
双层遍历,枚举每一个元素去与数组中的其他元素比较
判断是否等于target,如果有,返回下标即可
2.2哈希映射(推荐)
时间复杂度O(n)
我们发现上一种方法的时间复杂度与空间复杂度比较大,所以我们使用哈希表来
思路如下:
- 遍历数组
- 判断在哈希表中是否存在 target-nums[i] 这个元素
- 如果存在,返回元素的下标即可
- 如果不存在,将此时的nums[i]存入哈希表中,然后继续遍历
- 遍历完整个数组,说明不存在,返回null即可
图解(搬自画手大鹏,如有侵权可以删除)如下:
3.代码实现
3.1穷举
class Solution {
public int[] twoSum(int[] nums, int target) {
int index1 = -1;
int index2 = -1;
for(int i = 0; i=0 && index2>=0) {
int[] num = {index1,index2};
return num;
}
return null;
}
}
3.2哈希表
class Solution {
public int[] twoSum(int[] nums, int target) {
Map m1 = new HashMap<>();
for(int i = 0; i < nums.length ; i++) {
if(m1.containsKey(target - nums[i])) {
return new int[] {m1.get(target-nums[i]),i};
}
m1.put(nums[i],i);
}
return null;
}
}
class Solution {
public int[] twoSum(int[] nums, int target) {
int index1 = -1;
int index2 = -1;
for(int i = 0; i=0 && index2>=0) {
int[] num = {index1,index2};
return num;
}
return null;
}
}



