242.注意vector<char>类型的hash就不对了,数据竟有这么大,恐怖如斯
class Solution {
public:
bool isAnagram(string s, string t) {
if(s.size()!=t.size()) return false;
vector<int> hash(26,0);
for(char c:s){
hash[c-'a']++;
}
for(char c:t){
if((--hash[c-'a'])<0)
return false;
}
return true;
}
};
349.两个数组的交集
class Solution {
public:
vector<int> intersection(vector<int>& nums1, vector<int>& nums2) {
unordered_set<int> res;
unordered_set<int> unset(nums1.begin(),nums1.end());
for(int i:nums2){
if(unset.find(i)!=unset.end()){
res.insert(i);
}
}
return vector<int>(res.begin(),res.end());
}
};
202.快乐数,代码组织逻辑上存在问题,注意把一个步骤抽象成函数
class Solution {
public:
int getSum(int n){
int sum=0;
while(n){
sum+=(n%10)*(n%10);
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.两数之和,并不是我梦开始的地方,因为我一开始就是跟着代码随想录刷的题
class Solution {
public:
vector<int> twoSum(vector<int>& nums, int target) {
unordered_map<int,int> map;
for(int i=0;i<nums.size();++i){
int k=target-nums[i];
if(map.find(k)!=map.end()){
return {i,map.find(k)->second};
}else{
map.insert({nums[i],i});
}
}
return {};
}
};