LeetCode 242.有效的字母异位词
解题思路:上代码
class Solution {
public:
bool isAnagram(string s, string t) {
// vector<int>
int count[26]={0};
for(int i=0;i<s.size();i++){
count[s[i]-'a']++;
}
for(int i=0;i<t.size();i++){
count[t[i]-'a']--;
}
for(int i=0;i<26;i++){
if(count[i]!=0)return false;
}
return true;
}
};
LeetCode 349. 两个数组的交集
解题思路:上代码
class Solution {
public:
vector<int> intersection(vector<int>& nums1, vector<int>& nums2) {
// unordered_set<int> set;
int count[1002]={-1};
vector<int> res;
for(int i=0;i<nums1.size();i++){
count[nums1[i]]=1;
}
for(int i=0;i<nums2.size();i++){
--count[nums2[i]];
if(count[nums2[i]]==0)res.push_back(nums2[i]);
}
return res;
}
};
LeetCode 202. 快乐数
解题思路:利用集合记录每次的计算结果,如果出现重复即返回false,直到结果为1,返回true。
解题代码如下:
class Solution {
public:
int sum(int n){
int sum=0;
while(n){
int t=n%10;
sum+=t*t;
n/=10;
}
return sum;
}
bool isHappy(int n) {
unordered_set<int>set;
while(n!=1){
if(set.find(sum(n))!=set.end())return false;
else{
n=sum(n);
set.insert(n);
}
}
return true;
}
};
LeetCode 1. 两数之和
解题思路:利用映射map存储数组值及其下标,key为数组值,value为对应下标(因所求为下标)
实现代码:
class Solution {
public:
vector<int> twoSum(vector<int>& nums, int target) {
unordered_map<int,int>mp;
for(int i=0;i<nums.size();i++){
auto iter = mp.find(target-nums[i]);
if(iter!=mp.end())return {iter->second,i};
mp.insert(pair<int,int>(nums[i],i));
}
return {};
}
};