提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
代码随想录算法训练营第六天| ● 242.有效的字母异位词 ● 349. 两个数组的交集 ● 202. 快乐数 ● 1. 两数之和
● 349. 两个数组的交集
● 202. 快乐数
● 1. 两数之和
242.有效的字母异位词
代码如下(示例):
class Solution {
public:
bool isAnagram(string s, string t) {
int record[101] = {0};
for (int i = 0; i < s.size(); i++) {
record[s[i] - 'a']++;
}
for (int i = 0; i < t.size(); i++) {
record[t[i] - 'a']--;
}
for (int i = 0; i < 26; i++) {
if (record[i] != 0) {
return false;
}
}
return true;
}
};
349. 两个数组的交集
代码如下(示例):
class Solution {
public:
vector<int> intersection(vector<int>& nums1, vector<int>& nums2) {
int res[1001] = {0};
vector<int> ans;
for(int i = 0;i<nums1.size();i++)
{
res[nums1[i]]++;
}
for(int i = 0;i<nums2.size();i++)
{
if (res[nums2[i]]!=0)
{
ans.push_back(nums2[i]);
res[nums2[i]] = 0;
}
}
return ans;
}
};
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> set;
while(1) {
int sum = getSum(n);
if (sum == 1) {
return true;
}
//寻找sum直到set末尾
if (set.find(sum) != set.end()) {
return false;
} else {
set.insert(sum);
}
n = sum;
}
}
};
一上来没做出来,找个时间看看set用法。
1. 两数之和
代码如下(示例):
class Solution {
public:
vector<int> twoSum(vector<int>& nums, int target) {
std::unordered_map <int,int> map;
for(int i = 0; i < nums.size(); i++) {
// 遍历当前元素,并在map中寻找是否有匹配的key
auto iter = map.find(target - nums[i]);
if(iter != map.end()) {
return {iter->second, i};
}
// 如果没找到匹配对,就把访问过的元素和下标加入到map中
map.insert(pair<int, int>(nums[i], i));
}
return {};
}
};
数组也可以,数组元素值为下标就行。