242. 有效的字母异位词
题目
https://leetcode.cn/problems/valid-anagram/
题解
class Solution {
public:
bool isAnagram(string s, string t) {
if(s.size() != t.size())
return false;
int Arr[26] = {0};
for(int i = 0;i < s.size();i++)
{
Arr[s[i] - 'a'] ++;
}
for(int i = 0;i < t.size();i++)
{
Arr[t[i] - 'a'] --;
}
for(int i = 0;i < 26;i++)
{
if(Arr[i] != 0)
return false;
}
return true;
}
};
注意
在数据量不大时,用数组作为哈希表十分方便。
题目
https://leetcode.cn/problems/intersection-of-two-arrays/
题解
class Solution {
public:
vector<int> intersection(vector<int>& nums1, vector<int>& nums2) {
unordered_set <int> setNum;
unordered_set <int> setRes;
vector<int> res;
for(int i = 0;i < nums1.size();i++)
{
if(setNum.find(nums1[i]) == setNum.end())
setNum.insert(nums1[i]);
}
for(int i = 0;i < nums2.size();i++)
{
if(setNum.find(nums2[i]) != setNum.end())
setRes.insert(nums2[i]);
}
copy(setRes.begin(),setRes.end(),back_inserter(res));
return res;
}
};
注意
202. 快乐数
题目
https://leetcode.cn/problems/happy-number/
题解
class Solution {
public:
bool isHappy(int n) {
unordered_set <int> setNum;
while(n != 1)
{
if(setNum.find(n) == setNum.end())
setNum.insert(n);
else
return false;
int temp = n;
int sum = 0;
while(temp != 0)
{
sum += (temp % 10) * (temp % 10);
temp = temp/10;
}
n = sum;
}
return true;
}
};
注意
循环中要修改n的值
1. 两数之和
题目
https://leetcode.cn/problems/two-sum/
题解
class Solution {
public:
vector<int> twoSum(vector<int>& nums, int target) {
vector<int> res;
unordered_map<int,int> mp;
for(int i = 0;i < nums.size();i++)
{
mp.insert(pair<int, int>(nums[i],i));
}
for(int i = 0;i < nums.size();i++)
{
auto temp = mp.find(target-nums[i]);
if(temp != mp.end() && temp->second != i)
{
res.push_back(i);
res.push_back(temp->second);
break;
}
}
return res;
}
};
注意
1.map插入
map.insert(pair<int, int>(nums[i], i));
map<key,value>
2.对于map,find是针对key进行查找
iterator map_name.find(key)