字母异位词
题目:
两个数组的交集
解法-哈希表
思路:
- 将Num1存储在set容器nums_set中,可以去重
- 遍历num2,如果Nums_set中有num2,则将num2插入到result_set中
复杂度:
- 时间复杂度:
- 空间复杂度:
代码:
1 |
|
语法小点:
- unordered_set
- 数据结构:基于哈希表
- 无序存储
- 去重
- set(ordered_set)
- 数据结构:基于红黑树
- 有序存储:元素按照升序排序
- 去重
- 解释:
unordered_set<int> nums_set(nums1.begin(), nums1.end());
- nums1.begin():返回指向nums1向量中第一个元素的迭代器
- nums1.end():返回指向nums1向量中最后一个元素下一个位置的迭代器
- 将nums1向量中的所有元素插入到一个无序集合nums_set中,用于去除重复元素并提供快速查找。
- 解释:
for (int num : nums2)
- for循环用于遍历名为nums2的容器中的每个元素。循环变量num依次取nums2中的每一个值。通常用于对nums2中的每个元素执行相同的操作。
- 解释:
if (nums_set.find(num) != nums_set.end()) { result_set.insert(num); }
- nums_set.find(num):这个方法会在 nums_set 中查找是否存在值为 num 的元素。查找成功会返回一个指向该元素的迭代器;查找失败会返回 nums_set.end(),表示查找未找到该元素。
- nums_set.find(num) != nums_set.end():这个条件判断返回的迭代器是否等于 nums_set.end()。
如果不等于nums_set.end(),说明找到了 num,即 nums_set 中存在 num。
如果等于 nums_set.end(),说明没有找到 num,即 nums_set 中不存在 num。