做了一些改进的尝试,嘻嘻。说明:此篇为阅读学习刷题notes,参考内容均标注链接。
用法速览:
1.
unordered_setnums_set(nums1.begin(),nums2.end());
2.Set.find()的使用_c++ set find-CSDN博客
以下为notes,阅读:代码随想录 (programmercarl.com)
关于STL(Standard Template Library) :C++ STL详解超全总结(快速入门STL)-CSDN博客
说来惭愧,哈希表贯穿学习始终,除了大一课设用了之后一直搁置,幸运的是现在还是决定重新学习。当我们想使用哈希法来解决问题的时候,我们一般会选择如下三种数据结构。
242. 有效的字母异位词
我觉得掌握了 代码如下:
时间复杂度: O(n)
空间复杂度: O(1)
class Solution {
public:
bool isAnagram(string s, string t) {
int s_hash[26]={0};
for(int i=0;i
解题思路(这个思路概括的很好很简洁,其实我之前已经这样操作很多次了,没意识到是hash罢了) 标签:哈希映射 首先判断两个字符串长度是否相等,不相等则直接返回 false 若相等,则初始化 26 个字母哈希表,遍历字符串 s 和 t s 负责在对应位置增加,t 负责在对应位置减少 如果哈希表的值都为 0,则二者是字母异位词
作者:画手大鹏 链接:力扣(LeetCode)官网 - 全球极客挚爱的技术成长平台 来源:力扣(LeetCode) 著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
[349. 两个数组的交集
解题思路(这个图特别清晰):
看代码有一个问题搞不清楚:Set.find()的使用_c++ set find-CSDN博客
class Solution { public: vectorintersection(vector & nums1, vector & nums2) { //set or array //讲解用的set set我也不会 就用set吧 //哈希表善于解决什么样的问题:给你一个元素判断在这个集合里是否出现过 //set用法好陌生 呜呜 unordered_set result; unordered_set nums_set(nums1.begin(),nums1.end()); for(int num:nums2){ if(nums_set.find(num)!=nums_set.end()){ result.insert(num); } } return vector (result.begin(),result.end()); } };
[202. 快乐数 - 力扣(LeetCode)
代码:(当我们遇到了要快速判断一个元素是否出现集合里的时候,就要考虑哈希法了。)
1. 两数之和
很明显暴力的解法是两层for循环查找,时间复杂度是O(n^2)。2021年做过这道
class Solution { public: vectortwoSum(vector & nums, int target) { int n = nums.size(); for (int i = 0; i < n; ++i) { for (int j = i + 1; j < n; ++j) { if (nums[i] + nums[j] == target) { return {i, j}; } } } return {}; } };
而今迈步从头越 到map了耶 :map目的用来存放我们访问过的元素,因为遍历数组的时候,需要记录我们之前遍历过哪些元素和对应的下标,这样才能找到与当前元素相匹配的(也就是相加等于target)
class Solution { public: vectortwoSum(vector & nums, int target) { std::unordered_map map; for(int i=0;i second,i}; } map.insert(pair (nums[i], i)); } return {}; } };
今天效率特别高,可能是因为心情特别不好【奇奇怪怪】。不知道到底能不能考上,不知道努力付出如果没有回报对之后的意义,那段时光的意义,其实注定是失败的,还是不甘心的在这里搏一搏。今天真棒,下午就完成了全部题目。
一切都因为,历史的接力棒已经在我们手中。我们是社会的中坚,不是因为我们身在高位,不是因为我们资金丰足,不是因为我们聪明绝顶,不,我们甚至并不比任何一代中国人优秀,只是我们有此机会。我们有一个机会把中国变得更好,我们有一个责任把中国变得更好。我们不能彼此耳语,而要朗声合唱,这歌声要求着国家与人的共同幸福,从一百多年前而来,回荡今时今日。
这就是为什么我们要相信自己的使命,让无力者有力,让悲观者前行。这就是为什么我们必须了解真相,不能坠入一个失真的世界。这就是为什么当我们讲述自己对国家的爱时,可以平静、深邃和坚定。
这就是为什么我们既不随波逐流,也不凌空虚蹈;这就是为什么我们要做现实主义者,求应然之事。【南方周末2009新年献词】