序号 | 题目 | 数据结构 | 算法 |
1 | 两数之和 | unordered_map<int, size_t> | 边查询边存储 |
217 | 存在重复元素 | unordered_set<int> | 边查询边存储 |
219 | 存在重复元素II | unordered_map<int, size_t> | 边查询边存储 |
unordered_set<int> | 边查询边存储并删除 | ||
242 | 有效的字母异位词 | vector<size_t> | 先存储,后查询并修改 |
268 | 丢失的数字 | vector<bool> | 先存储,后查询 |
349 | 两个数组的交集 | unordered_set<int> | 先存储,后查询并删除 |
350 | 两个数组的交集II | unordered_map<int, size_t> | 先存储,后查询、修改并删除 |
383 | 赎金信 | vector<size_t> | 先存储,后查询并修改 |
387 | 字符串中的第一个唯一字符 | vector<int> | 先存储并修改,后查询 |
448 | 找到所有数组中消失的数字 | vector<bool> | 先存储,后查询 |
1. 建立哈希表,可以使用三种数据结构:unordered_map<T, T>, unordered_set<T>, vector<T>。
1)如果需要索引和对应的值,可以使用unordered_map<T, T>,也是使用最普遍的数据结构;
2)如果不需要值,只需要索引,可以使用unordered_set<T>;
3)如果索引的数量和顺序是确定的,可以使用vector<T>,比如索引是字符就是这种情况。vector<T>可以视为具有特殊索引的unordered_map<T, T>。