242. 有效的字母异位词
class Solution { public: bool isAnagram(string s, string t) { int result[26] = {0}; for(int i = 0; i < s.size(); i++){ result[s[i] - 'a']++; } for(int i = 0; i < t.size(); i++){ result[t[i] - 'a']--; } for(int i = 0; i < 26; i++){ if(result[i] != 0) return false; } return true; } };
心得:这题考察了数组的简单应用。
349. 两个数组的交集
class Solution { public: vector<int> intersection(vector<int>& nums1, vector<int>& nums2) { unordered_set<int> result; unordered_set<int> nums_set(nums1.begin(), nums1.end()); for(int num : nums2){ if(nums_set.find(num) != nums_set.end()) result.insert(num); } return vector<int>(result.begin(), result.end()); } };
心得:本题思路很简答,但是我对set的应用不太熟悉。
202. 快乐数
class Solution { public: int getSum(int n){ int sum = 0; while(n){ sum += (n%10) * (n%10); n = n/10; } return sum; } bool isHappy(int n) { unordered_set<int> result; while(1){ int sum = getSum(n); if(sum == 1) return true; if(result.find(sum) != result.end()) return false; else result.insert(sum); n = sum; } } };
心得:这题同样的,想不到要判断是否sum会出现循环。
1. 两数之和
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}; map.insert(pair<int, int>({nums[i], i})); } return {}; } };
心得:仍旧是map用法不太熟悉。