前言
哈希大法好
打卡第五天,本身哈希就掌握的不错,这个专题题做起来都比较轻松
哈希表
LeetCode 242. 有效的字母异位词
哈希的查询都感觉没什么好讲的
LeetCode 242. 有效的字母异位词
文章讲解
视频讲解
状态 : AC
- AC代码示例:
class Solution {
public:
bool isAnagram(string s, string t) {
int hash1[26];
int hash2[26];
for(auto i:s){
hash1[i-'a']++;
}
for(auto i:t){
hash2[i-'a']++;
}
for(int i=0;i<26;i++){
if(hash1[i]!=hash2[i]) return false;
}
return true;
}
};
- 时间复杂度:O(n)
- 空间复杂度:O(1)
LeetCode 349. 两个数组的交集
LeetCode 349. 两个数组的交集
文章讲解
视频讲解
状态 :AC
- AC代码示例:
class Solution {
public:
vector<int> intersection(vector<int>& nums1, vector<int>& nums2) {
int hash[1000];
vector<int>ans;
for(auto i:nums1){
hash[i]++;
}
for(auto i:nums2){
if(hash[i]){
hash[i]=0;
ans.push_back(i);
}
}
return ans;
}
};
- 时间复杂度:O(n)
- 空间复杂度:O(n)
LeetCode 202. 快乐数
LeetCode 202. 快乐数
文章讲解
没有视频讲解
状态 : AC
- AC代码示例:
class Solution {
public:
int geh(int num) {
int sum = 0;
while (num > 0) {
int k = num % 10;
sum += k * k;
num /= 10;
}
return sum;
}
bool isHappy(int n) {
set<int> hash;
while (1) {
if (n == 1) return true;
auto i = hash.find(n);
hash.insert(n);
if (i != hash.end()) return false;
n = geh(n);
}
return false;
}
};
- 时间复杂度:O(n)
- 空间复杂度:O(n)
LeetCode 1. 两数之和
LeetCode 1. 两数之和
文章讲解
视频讲解
状态 : AC
- AC代码示例:
class Solution {
public:
vector<int> twoSum(vector<int>& nums, int target) {
set<int> hash;
for(int i=0;i<nums.size();i++){
auto a=hash.find(target-nums[i]);
if(a!=hash.end()) for(int j=0;j<i;j++){
if(nums[j]==*a) return {i,j};
};
hash.insert(nums[i]);
}
return {};
}
};
- 时间复杂度:O(n)
- 空间复杂度:O(n)
总结
哈希很简单。。而且啥都能做,万能!
2024- 4-22