有效的字母异位词
题目链接
class Solution {
public:
bool isAnagram(string s, string t) {
if(s.length() != t.length())
return false;
unordered_map<char, int> map;
for(int i = 0; i < s.size(); i++){
map[s[i]]++;
}
for(int i = 0; i < t.size(); i++){
if(map.find(t[i]) == map.end() || map[t[i]] == 0)
return false;
else{
map[t[i]]--;
}
}
return true;
}
};
两个数组的交集
题目链接
class Solution {
public:
vector<int> intersection(vector<int>& nums1, vector<int>& nums2) {
unordered_set<int> s1;
vector<int> res;
for(int i = 0; i < nums1.size(); i++){
s1.insert(nums1[i]);
}
for(int i = 0; i < nums2.size(); i++){
if(s1.find(nums2[i]) != s1.end()){
res.push_back(nums2[i]);
s1.erase(nums2[i]);// 避免重复
}
}
return res;
}
};
快乐数
题目链接
class Solution {
public:
int HappySum(int num){
int res = 0;
while(num > 0){
int a = num % 10;
res += a * a;
num /= 10;
}
return res;
}
bool isHappy(int n) {
unordered_set<int> s;
while(s.find(n) == s.end()){
s.insert(n);
n = HappySum(n);
if(n == 1)
return true;
}
return false;
}
};
两数之和
题目链接
class Solution {
public:
vector<int> twoSum(vector<int>& nums, int target) {
unordered_map<int, int> map; //<数值,下标>
for(int i = 0; i < nums.size(); i++){
// 存在可以相加为target的组合
if(map.find(target - nums[i]) != map.end()){
return {map[target-nums[i]], i};
}
else{
map[nums[i]] = i;
}
}
return {};
}
};