LeetCode 705. 设计哈希集合
题目描述
思路分析
解法一:布尔数组(推荐)
核心思路:
- 题目约束 key 范围在 0~1,000,000。
- 直接用布尔数组标记存在与否。
- 插入、删除、查询均为 O(1)。
复杂度分析:
- 时间复杂度:O(1) 单次操作。
- 空间复杂度:O(1e6),固定大小数组。
class MyHashSet {
private final boolean[] data;
public MyHashSet() {
data = new boolean[1_000_001];
}
public void add(int key) {
data[key] = true;
}
public void remove(int key) {
data[key] = false;
}
public boolean contains(int key) {
return data[key];
}
}
type MyHashSet struct {
data []bool
}
func Constructor() MyHashSet {
return MyHashSet{data: make([]bool, 1_000_001)}
}
func (s *MyHashSet) Add(key int) {
s.data[key] = true
}
func (s *MyHashSet) Remove(key int) {
s.data[key] = false
}
func (s *MyHashSet) Contains(key int) bool {
return s.data[key]
}
相似题目
| 题目 | 难度 | 考察点 |
|---|---|---|
| 706. 设计哈希映射 | 简单 | 哈希表 |
| 380. O(1) 时间插入、删除和获取随机元素 | 中等 | 哈希表 |
| 36. 有效的数独 | 中等 | 哈希表 |
| 347. 前 K 个高频元素 | 中等 | 哈希表 |
| 49. 字母异位词分组 | 中等 | 哈希表 |
本博客所有文章除特别声明外,均采用
CC BY-NC-SA 4.0
许可协议,转载请注明出处!