242. 有效的字母异位词
class Solution {
public:
bool isAnagram(string s, string t) {
int record[26]={0};
for(int i=0;i<s.size();i++)
{
record[s[i]-'a']++;
}
for(int j=0;j<t.size();j++)
{
record[t[j]-'a']--;
}
for(int k=0;k<26;k++)
{
if(record[k]!=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(int num:nums2)
{
if(nums_set.find(num)!=nums_set.end())
{
result_set.insert(num);
}
}
return vector<int> (result_set.begin(),result_set.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> result;
while(1)
{
int sum=getSum(n);
if(sum==1)
{
return true;
}
if(result.find(sum)!=result.end())
{
return false; //说明有循环,永远不可能为1了
}else{
result.insert(sum);
}
n=sum; //控制循环的量,每次都用上一次的sum
}
}
};
我觉得这类型的题就看我能不能有这个思维了,看一遍思路就能写出来,但是自己无论如何写不出来
1.两数之和
class Solution {
public:
vector<int> twoSum(vector<int>& nums, int target) {
for(int i=0;i<nums.size();i++)
{
for(int j=i+1;j<nums.size();j++)
{
if(nums[i]+nums[j]==target)
{
return vector<int>{i,j};
}
}
}
return vector<int>{};
}
};
暴力解法固然好使,但还是要用点更好的方法解决问题!