代码随想录算法训练营第六天| 242 有效的字母异位词 349 两个数组的交集 202 快乐数 1 两数之和
•
算法结构
目录
242 有效的字母异位词
349 两个数组的交集
202 快乐数
1 两数之和
242 有效的字母异位词
排序
class Solution {
public:
bool isAnagram(string s, string t) {
sort(s.begin(),s.end());
sort(t.begin(),t.end());
return t == s;
}
};
时间复杂度O(nlogn)
空间复杂度O(logn)
哈希表
class Solution {
public:
bool isAnagram(string s, string t) {
if(s.size() != t.size())return false;
vectortable(26,0);
for(char ch : s){
table[ch - 'a']++;
}
for(char ch : t){
table[ch - 'a']--;
if(table[ch - 'a'] < 0)return false;
}
return true;
}
};
时间复杂度O(n + m)
空间复杂度O(s)s = 26
349 两个数组的交集
class Solution {
public:
vector intersection(vector& nums1, vector& nums2) {
vectorres;
unordered_setset1,set2;
for(auto num : nums1){
set1.insert(num);
}
for(auto num : nums2){
set2.insert(num);
}
for(auto num : set1){
if(set2.count(num) > 0){
res.push_back(num);
}
}
return res;
}
};
时间复杂度O(n + m)
空间复杂度O(n + m)
202 快乐数
暴力
class Solution {
public:
bool isHappy(int n) {
for(int i = 0;i < 100;i++){
int res;
while(n){
int num = n % 10;
n /= 10;
res += num * num;
}
n = res;
res = 0;
if(n == 1)return true;
}
return false;
}
};
哈希表
class Solution {
public:
bool isHappy(int n) {
unordered_setset;
while(n != 1 && !set.count(n)){
set.insert(n);
int sum = 0;
while(n){
sum += (n % 10)* (n % 10);
n /= 10;
}
n = sum;
}
if(n == 1)return true;
return false;
}
};
时间复杂度O(logn)
空间复杂度O(logn)
1 两数之和
class Solution {
public:
vector twoSum(vector& nums, int target) {
unordered_maptable;
for(int i = 0;i second,i};
}
table[nums[i]] = i;
}
return {};
}
};
时间复杂度O(n)
空间复杂度O(n)
本文来自网络,不代表协通编程立场,如若转载,请注明出处:https://www.net2asp.com/71d34b6577.html
