LeetCode - 和可被K整除的子数组

974. 和可被 K 整除的子数组

题目描述:一个连续的区间可以被k整除。

一个连续的区间可以被k整除,如果用前缀和就是(arr[r] - arr[l - 1]) / k = 0;当然,在计算机语言里面,用除法判断结果是否为0不行,需要用%,(arr[r] - arr[l - 1]) % k = 0,其实可以转化一下,arr[r] % k = arr[l - 1] % k,也就是说,在前缀和数组中,找到等于arr[l - 1] % k的数字出现的个数即可。如何知道某个数字出现的个数?使用哈希,哈希可以完成此操作。

class Solution {
public:
    int subarraysDivByK(vector<int>& nums, int k) {
        unordered_map<int, int> record;
        record[0] = 1; // 对哈希初始化,防止nums数组中存在以本身为符合条件的数字
        int sum = 0;
        int ans = 0;
        for (auto &t : nums)
        {
            sum += t;
            int mod = (sum % k + k) % k; // C++中,负数的余数还是负数,需要进行处理,转变为正数
            if (record.count(mod)) 
            {
                ans += record[mod]; 
            }
            ++record[mod];
        }
        return ans;
    }
};

最近更新

  1. TCP协议是安全的吗?

    2024-03-15 14:38:02       17 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-03-15 14:38:02       16 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-03-15 14:38:02       15 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-03-15 14:38:02       18 阅读

热门阅读

  1. 牛客小白月赛61-C-小喵觅食

    2024-03-15 14:38:02       21 阅读
  2. C# MG.CamCtrl 工业相机库(开源) 海康 大恒

    2024-03-15 14:38:02       24 阅读
  3. nginx升级版本

    2024-03-15 14:38:02       21 阅读
  4. 计算机网络 网络层设备的 冲突域和广播域

    2024-03-15 14:38:02       23 阅读
  5. H12-821_210

    2024-03-15 14:38:02       18 阅读
  6. openGauss SQL引擎插件开发指导

    2024-03-15 14:38:02       17 阅读
  7. ES6基础4

    2024-03-15 14:38:02       17 阅读
  8. MySQL 8.0 的 SQL 优化建议

    2024-03-15 14:38:02       18 阅读