一、简介
哈希表是一种使用键值对 key-value 来存储数据的容器,用于快速查找某个元素,时间复杂度为 O(1)。
- 应用场景:频繁查找元素的时候。
- 使用方法:
- 语言自带的集合类
- 使用数组模拟,用下标来当 key 值
二、两数之和
题目链接:1.两数之和
题目描述:

解题思路:
- 使用一个 hash 容器,将数组以数组元素 - 下标的形式存储起来。
- 再遍历数组,当 hash 表中有与当前数组元素加起来等于 target 的并且不是同一个元素的返回即可。
解题代码:
// 时间复杂度:O(n)
// 空间复杂度:O(n)
import java.util.*;
class Solution {
public int[] twoSum(int[] nums, int target) {
Map<Integer, Integer> hash = new HashMap<>();
for (int i = 0; i < nums.length; i++) {
hash.put(nums[i], i);
}
for (int i = 0; i < nums.length; i++) {
int j = hash.getOrDefault(target - nums[i], -1);
if (j != -1 && i != j) {
return new int[]{i, j};
}
}
;
}
}






