242有效得字母异位词
class Solution {
public:
bool isAnagram(string s, string t)
{
if(s.size()!=t.size()) return false;
unordered_map<char,int>ump;
int l=s.size();
for(int i=0;i<l;i++)
{
ump[s[i]]++;
ump[t[i]]--;
}
for(auto a:ump)
{
if(a.second!=0)return false;
}
return true;
}
};
349两个数组的交集
class Solution {
public:
vector<int> intersection(vector<int>& nums1, vector<int>& nums2)
{
unordered_set<int> result_set;
unordered_set<int> nums_set(nums1.begin(), nums1.end());
for(auto a:nums2)
{
if(nums_set.find(a)!=nums_set.end())
{
result_set.insert(a);
}
}
return vector<int>(result_set.begin(), result_set.end());
}
};
今天最大的收获就是unordered_set和vector的初始化还可以这样定义
另外set和map的find是 a.find()==a,end()
vector的find 是find(vec.begin(),vec.end())==vec.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>res;
while(1)
{
int sum=getSum(n);
if(sum==1)return true;
if(res.find(sum)!=res.end()) return false;
else res.insert(sum);
n=sum;
}
}
};
一开始真的没想到用set判断是不是进入死循环了。
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++)
{
auto a= map.find(target - nums[i]);
if(a != map.end()) {
return {a->second, i};
}
map.insert(pair<int, int>(nums[i], i));
}
return {};
}
};
一开始想用双指针做,后来通过率只有80%多,发现不能给他升序,升序序号就变了,那就要保存序号,难度直接上升一个级别。