974. 和可被 K 整除的子数组
Posted yonezu
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了974. 和可被 K 整除的子数组相关的知识,希望对你有一定的参考价值。
方法一:不用统计前缀和,只需要统计前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 整除的子数组的主要内容,如果未能解决你的问题,请参考以下文章
[LeetCode] 974. 和可被 K 整除的子数组 !!!
[LeetCode] 974. 和可被 K 整除的子数组 !!!