【刷题DAY3】哈希表part01 | 242.有效的字母异位词 349. 两个数组的交集 202. 快乐数

1,553 阅读1分钟

242. 有效的字母异位词

bool isAnagram(string s, string t) {
        if(s.length() != t.length()){
            return false;
        }
        map<char, int> tmp1;
        map<char, int> tmp2;
        for(int i=0; i< s.length(); i++){
            if(tmp1.count(s[i]) > 0){
                ++tmp1[s[i]];
            }else{
                tmp1[s[i]] = 1;
            }

            if(tmp2.count(t[i]) > 0){
                ++tmp2[t[i]];
            }else{
                tmp2[t[i]] = 1;
            }
        }
        for(auto iter = tmp1.begin(); iter!=tmp1.end(); iter++){
            if(tmp2.count(iter->first) <= 0){
                return false;
            }
            if(tmp2[iter->first] != iter->second){
                return false;
            }
        }
        return true;
    }

349. 两个数组的交集

vector<int> intersection(vector<int>& nums1, vector<int>& nums2) {
        vector<int> result;

        set<int> tmp1(nums1.begin(), nums1.end());
        set<int> tmp2(nums2.begin(), nums2.end());

        for(auto iter= tmp2.begin(); iter != tmp2.end(); iter++){
            if(tmp1.count(*iter)){
                result.push_back(*iter);
            }
        }
        return result;
    }

1. 两数之和

vector<int> twoSum(vector<int>& nums, int target) {
        map<int, int> tmp;
        for(int i=0; i<nums.size(); i++){
            tmp[target-nums[i]] = i;
        }

        for(int i=0; i<nums.size(); i++){
            if(tmp.count(nums[i]) && i != tmp[nums[i]]){
                return {i, tmp[nums[i]]};
            }
        }
        return {};
    }