当前位置:网站首页>400-哈希表(1. 两数之和、454. 四数相加 II、383. 赎金信)

400-哈希表(1. 两数之和、454. 四数相加 II、383. 赎金信)

2022-06-22 05:35:00 liufeng2023

1. 两数之和

在这里插入图片描述

class Solution {
    
public:
    vector<int> twoSum(vector<int>& nums, int target) {
    

        unordered_map<int, int> mp;

        for (int i = 0; i < nums.size(); i++)
        {
    
            auto iter = mp.find(target - nums[i]);

            if (iter != mp.end())
            {
    
                return {
     iter->second, i };
            }

            mp[nums[i]] = i;
        }
        return {
    };
    }
};

在这里插入图片描述

454. 四数相加 II

在这里插入图片描述

class Solution {
    
public:
    int fourSumCount(vector<int>& nums1, vector<int>& nums2, vector<int>& nums3, vector<int>& nums4) {
    
        unordered_map<int, int> mp;

        for (int a : nums1)
        {
    
            for (int b : nums2)
            {
    
                mp[a + b]++;
            }
        }

        int res = 0;

        for (int c : nums3)
        {
    
            for (int d : nums4)
            {
    
                if (mp.find(0 - (c + d)) != mp.end())
                {
    
                    res += mp[(0 - (c + d))];
                }
            }
        }
        return res;
    }
};

在这里插入图片描述

383. 赎金信

在这里插入图片描述

class Solution {
    
public:
    bool canConstruct(string ransomNote, string magazine) {
    
        int record[26] = {
     0 };

        if (ransomNote.size() > magazine.size()) return false;

        for (int i = 0; i < magazine.size(); i++)
        {
    
            record[magazine[i] - 'a']++;
        }

        for (int i = 0; i < ransomNote.size(); i++)
        {
    
            record[ransomNote[i] - 'a']--;

            if (record[ransomNote[i] - 'a'] < 0)   return false;
        }
        return true;
    }
};

在这里插入图片描述

原网站

版权声明
本文为[liufeng2023]所创,转载请带上原文链接,感谢
https://blog.csdn.net/Edward_LF/article/details/125384678