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用法不太熟悉。

posted on 2023-03-06 21:29  小黑哈哈  阅读(96)  评论(0编辑  收藏  举报