题目:两数之和 点击跳转
文章目录
- 题目描述
- 暴力求解
- HashMap(哈希表)
- 总结
-
- [HashMap 到底是什么](#HashMap 到底是什么)
- HashMap的定义
- HashMap的操作
- 长度为0的数组
题目描述
给你一个数组 nums 和一个目标值 target,找到两个数,使它们相加等于 target,返回它们的下标。

暴力求解
java
public int[] twoSum(int[] nums, int target) {
for (int i = 0; i < nums.length; i++) {
for (int j = i + 1; j < nums.length; j++) {
if (nums[i] + nums[j] == target) {
return new int[]{i, j};
}
}
}
return new int[0];
}
HashMap(哈希表)
java
import java.util.HashMap;
class Solution {
public int[] twoSum(int[] nums, int target) {
HashMap<Integer, Integer> map = new HashMap<>();
for (int i = 0; i < nums.length; i++) {
int need = target - nums[i];
if (map.containsKey(need)) {
return new int[]{map.get(need), i};
}
map.put(nums[i], i);
}
return new int[0];
}
}
总结
HashMap 到底是什么
可以理解为一个超快的记录本
某个数值 -> 它所在的下标
key = 数组里的值
value = 这个值对应的下标
HashMap的定义
java
HashMap<Integer, Integer> map = new HashMap<>();
HashMap的操作
放进去
java
map.put(2, 0);
把数字 2 和下标 0 记录进去。
查有没有
java
map.containsKey(2)
map 里有没有 key=2 这个东西?
如果有,返回 true
如果没有,返回 false
取出来
java
map.get(2)
把 key=2 对应的 value 取出来。
长度为0的数组
java
return new int[0];