代码随想录-DAY⑥-哈希表——leetcode 383 | 454

383

思路

首先统计 magazine 中每个英文字母 a 的次数 cnt[a],再遍历统计 ransomNote 中每个英文字母的次数,如果发现 ransomNote 中存在某个英文字母 c 的统计次数大于 magazine 中该字母统计次数 cnt[c],则此时我们直接返回 false。

时间复杂度:O(n+m)
空间复杂度:O(1)

代码
class Solution {
public:
    bool canConstruct(string ransomNote, string magazine) {
        vector<int> cnt(26);
        for (auto c : magazine) {
            cnt[c - 'a']++;
        }
        for (auto c : ransomNote) {
            cnt[c - 'a']--;
            if (cnt[c - 'a'] < 0) {
                return false;
            }
        }
        return true;
    }
};

454

思路

将四个数组分成两部分,A 和 B 为一组,C 和 D 为另外一组。
遍历A和B数组,统计两个数组元素之和,和出现的次数,放到map中。
定义int变量count,用来统计 a+b+c+d = 0 出现的次数。
再遍历C和D数组,找到如果 0-(c+d) 在map中出现过的话,就用count把map中key对应的value也就是出现次数统计出来。

时间复杂度:O(n^2)
空间复杂度:O(n^2)

代码
class Solution {
public:
    int fourSumCount(vector<int>& A, vector<int>& B, vector<int>& C, vector<int>& D) {
        unordered_map<int, int> umap;
        int count = 0;
        for (int a : A) {
            for (int b : B) {
                umap[a + b]++;
            }
        }
        for (int c : C) {
            for (int d : D) {
                if (umap.find(0 - (c + d)) != umap.end()) {
                    count += umap[0 - (c + d)];
                }
            }
        }
        return count;
    }
};

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-07-11 12:16:02       53 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-07-11 12:16:02       56 阅读
  3. 在Django里面运行非项目文件

    2024-07-11 12:16:02       46 阅读
  4. Python语言-面向对象

    2024-07-11 12:16:02       57 阅读

热门阅读

  1. linux去掉行首的#字符

    2024-07-11 12:16:02       19 阅读
  2. 常见的负载均衡算法和实现方式

    2024-07-11 12:16:02       22 阅读
  3. Android焦点之Focused Window的更新(二)

    2024-07-11 12:16:02       17 阅读
  4. SpringBoot源码阅读(9)——转换服务

    2024-07-11 12:16:02       16 阅读
  5. C#中的Dictionary

    2024-07-11 12:16:02       18 阅读
  6. C语言标准库中的函数

    2024-07-11 12:16:02       22 阅读
  7. MVC分页

    MVC分页

    2024-07-11 12:16:02      24 阅读
  8. 整数 d → 字符 ‘d‘ 的转换代码为:d+‘0‘

    2024-07-11 12:16:02       20 阅读
  9. 进阶版智能家居系统Demo[C#]:整合AI和自动化

    2024-07-11 12:16:02       20 阅读
  10. 【C语言】C语言可以做什么?

    2024-07-11 12:16:02       19 阅读
  11. Windows图形界面(GUI)-SDK-C/C++ - 按钮(button)

    2024-07-11 12:16:02       23 阅读
  12. [C++]继承

    2024-07-11 12:16:02       20 阅读