做网站的公司主要工作是什么,后期网站开发,精诚时代 网站谁做的,北京seo优化排名哈希表理论基础 建议#xff1a;大家要了解哈希表的内部实现原理#xff0c;哈希函数#xff0c;哈希碰撞#xff0c;以及常见哈希表的区别#xff0c;数组#xff0c;set 和map。 什么时候想到用哈希法#xff0c;当我们遇到了要快速判断一个元素是否出现集合里的时… 哈希表理论基础 建议大家要了解哈希表的内部实现原理哈希函数哈希碰撞以及常见哈希表的区别数组set 和map。 什么时候想到用哈希法当我们遇到了要快速判断一个元素是否出现集合里的时候就要考虑哈希法。 这句话很重要大家在做哈希表题目都要思考这句话。 文章讲解代码随想录 242.有效的字母异位词 建议 这道题目大家可以感受到 数组 用来做哈希表 给我们带来的遍历之处。 题目链接/文章讲解/视频讲解 代码随想录 349. 两个数组的交集 建议本题就开始考虑 什么时候用set 什么时候用数组本题其实是使用set的好题但是后来力扣改了题目描述和 测试用例添加了 0 nums1[i], nums2[i] 1000 条件所以使用数组也可以了不过建议大家忽略这个条件。 尝试去使用set。 题目链接/文章讲解/视频讲解代码随想录 202. 快乐数 建议这道题目也是set的应用其实和上一题差不多就是 套在快乐数一个壳子 题目链接/文章讲解代码随想录 1. 两数之和 建议本题虽然是 力扣第一题但是还是挺难的也是 代码随想录中 数组set之后使用map解决哈希问题的第一题。 建议大家先看视频讲解然后尝试自己写代码在看文章讲解加深印象。 题目链接/文章讲解/视频讲解代码随想录 使用哈希法用数组来做哈希表。字符为key建立key与index的映射然后value为key出现的次数。 映射关系indexkey-‘a’。 c代码示例如下时间复杂度O(n)、空间复杂度O(1) bool isAnagram(string s, string t) {int record[26] { 0 };for (int i 0; i s.size(); i) {record[s[i] - a];}for (int i 0; i t.size(); i) {record[t[i] - a]--;}for (int i 0; i 26; i) {if (record[i] ! 0) {return false;}}return true;
} 输出结果中每一个元素都是唯一的我们使用unordered_set来接受结果对于unordered_set的初始化可以使用迭代器初始化。 c代码示例如下 时间复杂度O(nm)空间复杂度O(n) vectorint intersection(vectorint nums1, vectorint nums2) {unordered_setint result;unordered_setint nums_set(nums1.begin(), nums1.end());for (int num : nums2) {if (nums_set.find(num) ! nums_set.end()) {result.insert(num);}}return vectorint(result.begin(), result.end());
} 发现题目给的数据的大小0nums1[i],nums2[i]1000可以使用大小为1001的数组来做哈希表数字作为key-index出现次数为value。还是用unordered_set来接受结果。 c代码示例如下 vectorint intersection(vectorint nums1, vectorint nums2) {unordered_setint result;int hash[1001] { 0 };for (int num : nums1) {hash[num] 1;}for (int num : nums2) {if (hash[num] 1) {result.insert(num);}}return vectorint(result.begin(), result.end());
} 难点就是意识到无限循环就是sum重复出现 c代码示例如下 int getSum(int n) {int sum 0;while (n) {sum (n % 10) * (n % 10);n / 10;}return sum;
}
bool isHappy(int n) {unordered_setint set;while (1) {int sum getSum(n);if (sum 1) {return true;}if (set.find(sum) ! set.end()) {return false;}else {set.insert(sum);}n sum;}
}