1. 242. 有效的字母异位词 - 力扣(LeetCode)
class Solution {
public:
bool isAnagram(string s, string t) {
int record[26] = {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;
}
};
2. 349. 两个数组的交集 - 力扣(LeetCode)
class Solution {
public:
vector<int> intersection(vector<int>& nums1, vector<int>& nums2) {
unordered_set<int> result_set;
unordered_set<int> num_set (nums1.begin(), nums1.end());
for(int i = 0; i< nums2.size(); i++){
if(num_set.find(nums2[i]) != num_set.end()){
result_set.insert(nums2[i]);
}
}
return vector<int>(result_set.begin(), result_set.end());
}
};
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;
}
if(set.find(sum) != set.end()){
return false;
} else{
set.insert(sum);
}
n = sum;
}
}
};
4. 两数之和 1. 两数之和 - 力扣(LeetCode)
暴力法
class Solution {
public:
vector<int> twoSum(vector<int>& nums, int target) {
int n = nums.size();
for(int i = 0; i < n; i++){
for (int j = i+1; j < n; j++){
if(nums[i] + nums[j] == target){
return {i,j};
}
}
}
return {};
}
};
哈希法
class Solution {
public:
vector<int> twoSum(vector<int>& nums, int target) {
unordered_map <int,int> map;
for(int i = 0; i < nums.size(); i++){
auto iter = map.find(target-nums[i]);
if(iter!= map.end()){
return {iter->second, i};
} else{
map.insert(pair<int,int>(nums[i], i));
}
}
return {};
}
};