理解掌握哈希表三种常用的数据结构,数组,set,map
###242.有效的字母异位词
class Solution { public: bool isAnagram(string s, string t) { int count[26]={0}; for(int i=0;i<s.size();i++){ count[s[i]-'a']++; } for(int i=0;i<t.size();i++){ count[t[i]-'a']--; } for(int i=0;i<26;i++){ if(count[i]!=0) return false;
}
return true;
}
};
###set 求两数交集
class Solution { public: vector intersection(vector& nums1, vector& nums2) { vector ans; unordered_set count{nums1.begin(),nums1.end()}; for(auto& iter : nums2){ if(count.find(iter)!=count.end()){ count.erase(iter); ans.emplace_back(iter); } } return ans; } };
梦开始的地方,两数之和。
class Solution {
public: vector twoSum(vector& nums, int target) { //将数组输入到hashmap里 unordered_map<int,int> count_map; for(int i=0;i<nums.size();i++){ if(count_map.empty()){ count_map[nums[i]]=i; continue; } //确定插值并且逐步迭代插入count_map int tmp=target-nums[i]; auto it=count_map.find(tmp); if(it!=count_map.end()){ int j=it->second; return {i,j}; } else{ count_map[nums[i]]=i; }
}
return {-1,-1};
}
};
hash表的三道题目并不难,难的是熟悉这些hash表的接口,方便调用,尤其是迭代器的使用要尤其注意。