242. 有效的字母异位词
1、开局初始化数组写法
2、最后判断数组是否全0写法
if(record==0) return true; 这样写是错误的,应该循环遍历?
代码
class Solution {
public:
bool isAnagram(string s, string t) {
int record[26]={0};
for(char s1:s) {
record[s1-'a']++;
}
for(char s2:t) {
record[s2-'a']--;
}
for(int i=0;i<26;i++) {
if(record[i]!=0) return false;
}
return true;
}
};
349. 两个数组的交集
问题:怎么把set转成vector;vector<int>(result.begin(),result.end());
代码:
class Solution {
public:
vector<int> intersection(vector<int>& nums1, vector<int>& nums2) {
unordered_set<int> st;
unordered_set<int> result;
for(int i:nums1) {
st.insert(i);
}
for(int i:nums2) {
if(st.count(i)) {
result.insert(i);
}
}
return vector<int>(result.begin(),result.end());
}
};
第202题. 快乐数
1、怎么取数值各个位上的单数之和
2、要想到循环终止条件
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> record;
while (1) {
if(record.count(n)) {
return false;
}
else {
record.insert(n);
n=getSum(n);
if(n==1) return true;
}
}
return true;
}
};
1. 两数之和
问题;
对于map使用find函数找到的是一个迭代器,这时候需要判断迭代器是不是等于map.end
代码
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 {i,mp[target-nums[i]]};
mp[nums[i]]=i;
}
return{-1,-1};
}
};