242.有效的字母异位词
文档讲解:代码随想录.有效的字母异位词
视频讲解:学透哈希表,数组使用有技巧!Leetcode:242.有效的字母异位词
状态:已完成
代码实现
class Solution {
public:
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;
}
};
心得记录:
-
常见的哈希结构包括数组,set(集合)和map(映射),即可以用数组构建哈希结构,上面这个例子就是
-
set和map结构的理解
-
这里红黑树和哈希表算是有个印象,后面通过做题提升记忆
-
使用数组来做哈希的题目,是因为题目都限制了数值的大小。
349. 两个数组的交集
文档讲解:代码随想录.两个数组的交集
视频讲解:学透哈希表,set使用有技巧!Leetcode:349. 两个数组的交集
状态:已完成
代码实现
class Solution {
public:
vector<int> intersection(vector<int>& nums1, vector<int>& nums2) {
unordered_set<int> result_set;
unordered_set<int> nums(nums1.begin(), nums1.end());
for (int num : nums2) {
if (nums.find(num) != nums.end()) {
result_set.insert(num);
}
}
return vector<int>(result_set.begin(), result_set.end());
}
};
心得记录:
- 基本的查找方法不是很熟练,以及unordered_set的基本使用方法不够熟练
- 例子说明了这种方法应该是拉链法解决哈希冲突。
202. 快乐数
文档讲解:代码随想录.快乐数
视频讲解:无
状态:已完成
代码实现
class Solution {
public:
int getSum(int n) {
int sum = 0;
while(n){
sum += (n % 10) * (n % 10);
n = n / 10;
}
return sum;
}
bool isHappy(int n) {
unordered_set<int> 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;
}
}
};
心得记录:
- 暂时先按照答案过了一遍
1.两数之和
文档讲解:代码随想录.两数之和
视频讲解:梦开始的地方,Leetcode:1.两数之和,学透哈希表,map使用有技巧!
状态:已完成
代码实现
class Solution {
public:
vector<int> twoSum(vector<int>& nums, int target) {
std::unordered_map<int,int> map;
for(int i = 0; i < nums.size();i++){
auto iter= map.find(target - nums[i]);
if(iter != map.end()){
return {iter->second,i};
}
map.insert(pair<int,int>(nums[i],i));
}
return {};
}
};
心得记录:
1.状态不佳, 暂时先按照答案过了一遍