242.有效的字母异位词
class Solution {
public:
bool isAnagram(string s, string t) {
int arr[26] = {0};
for(int i=0; i<s.size(); i++){
arr[s[i]-97] ++ ;
}
for(int i=0; i<t.size(); i++){
arr[t[i]-97] --;
}
for(int i=0; i<26; i++){
if(arr[i]!=0) return false;
}
return true;
}
};
349. 两个数组的交集
用find函数来定位数据出现位置,它返回的一个迭代器,当数据出现时,它返回数据所在位置的迭代器,如果没有要查找的数据,它返回的迭代器等于end函数返回的迭代器。
unordered_set中的元素唯一。
class Solution {
public:
vector<int> intersection(vector<int>& nums1, vector<int>& nums2) {
unordered_set<int> ans;
unordered_set<int> num(nums1.begin(), nums1.end());
for(int i=0; i<nums2.size(); i++){
if(num.find(nums2[i]) != num.end()){
ans.insert(nums2[i]);
}
}
vector<int> ans1(ans.begin(), ans.end());
return ans1;
}
};
202. 快乐数
错误点:重复的数不一定是刚开始的值,也可能是中间值,所以要把中间的和存下来,重复出现就返回false。
class Solution {
public:
bool isHappy(int n) {
int sum = 0;
unordered_set<int> set1;
while(1){
while(n){
sum += (n%10)*(n%10);
n = n/10;
}
if(sum == 1) return true;
if(set1.find(sum) != set1.end()) break;
set1.insert(sum);
n = sum;
sum = 0;
}
return false;
}
};
1. 两数之和
先与目标值匹配,在把元素添加进去。
class Solution {
public:
vector<int> twoSum(vector<int>& nums, int target) {
int size = nums.size();
unordered_map<int,int> map1;
for(int i=0;i<size;i++){
if(map1.find(target-nums[i])!=map1.end()){
unordered_map<int,int>::iterator it;
it = map1.find(target-nums[i]);
return {it->second,i};
}
map1.insert(pair<int,int>(nums[i],i));
}
return {};
}
};