242.有效的字母异位词
参考资料:代码随想录 (programmercarl.com)
通过数组来查找。
class Solution {
public:
bool isAnagram(string s, string t) {
int Hash[26] = {0};
for (int i = 0; i < s.size(); i++) {
Hash[s[i] - 'a'] += 1;
}
for (int i = 0; i < t.size(); i++) {
Hash[t[i] - 'a'] -= 1;
}
for (int i = 0; i < 26; i++) {
if (Hash[i] != 0) {
return false;
}
}
return true;
}
};
349. 两个数组的交集
参考资料:代码随想录 (programmercarl.com)
遇到的问题是:对unordered_set的使用不熟,看了视频讲解,照着打了一遍。
class Solution {
public:
vector<int> intersection(vector<int>& nums1, vector<int>& nums2) {
unordered_set<int> ans;
unordered_set<int> record(nums1.begin(), nums1.end());
for (int num : nums2) {
if (record.find(num) != record.end())
ans.insert(num);
}
return vector<int>(ans.begin(), ans.end());
}
};
202. 快乐数
参考资料:代码随想录 (programmercarl.com)
没有思路,看了卡哥的解法。
class Solution {
public:
int getNum(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) {
int sum = getNum(n);
if (sum == 1) {
return true;
}
if (record.find(sum) != record.end()) {
return false;
} else {
record.insert(sum);
}
n = sum;
}
return false;
}
};
1. 两数之和
参考资料:代码随想录 (programmercarl.com)
对unordered_map使用不熟。
class Solution {
public:
vector<int> twoSum(vector<int>& nums, int target) {
unordered_map<int, int> record;
for (int i = 0; i < nums.size(); i++) {
auto j = record.find(target - nums[i]);
if (j != record.end()) {
return {j->second, i};
}
record.insert(pair<int, int>(nums[i], i));
}
return {};
}
};
总结
今天的题目还没有完全吃透。再接再厉。