码迷,mamicode.com
首页 > 编程语言 > 详细

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

时间:2020-07-15 23:41:52      阅读:64      评论:0      收藏:0      [点我收藏+]

标签:col   array   class   info   get   bsp   src   sub   mamicode   

技术图片

 

 方法一:不用统计前缀和,只需要统计前i个数的余数就可以,若之前和的余数和当前和的余数相等则子数组可以整除K,遍历一遍即可

class Solution {
    public int subarraysDivByK(int[] A, int k) {
        int n = A.length;   
        Map<Integer,Integer> map = new HashMap<>();
        map.put(0,1);  // 本身即可整除K的情况
        int sum = 0, res = 0;
        for(int i = 0; i < n; i++) {
            sum += A[i];
            int yu = (sum % k + k) % k; // 防止出现余数为负的情况
            res += map.getOrDefault(yu,0);
            map.put(yu,map.getOrDefault(yu,0)+1);
        }
        return res;
    }
}

数组优化:

class Solution {
    public int subarraysDivByK(int[] A, int k) {
        int n = A.length;   
        int[] arr = new int[10000];
        arr[0] = 1;  // 本身即可整除K的情况
        int sum = 0, res = 0;
        for(int i = 0; i < n; i++) {
            sum += A[i];
            int yu = (sum % k + k) % k; // 防止出现余数为负数的情况
            res += arr[yu];
            arr[yu]++;
        }
        return res;
    }
}

 

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

标签:col   array   class   info   get   bsp   src   sub   mamicode   

原文地址:https://www.cnblogs.com/yonezu/p/13307684.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!