本文共 982 字,大约阅读时间需要 3 分钟。
给定一个整数数组 A,返回其中元素之和可被 K 整除的(连续、非空)子数组的数目。
int subarraysDivByK(vector & A, int K) { int ans = 0; for (int i = 0; i < A.size(); i++) { for (int j = i; j < A.size(); j++) { int sum = 0; for (int k = i; k <= j; k++) { sum += A[k]; } if (sum % K==0) { ans++; } } } return ans;}
int subarraysDivByK(vector & A, int K) { int ans = 0; for (int i = 0; i < A.size(); i++) { int CurrSum = 0; for (int j = i; j < A.size(); j++) { CurrSum += A[j]; if (CurrSum % K == 0) ans++; } } return ans; }
int subarraysDivByK(vector & A, int K) { int sum = 0; int ans = 0; maphash = { { 0,1} }; for (int i = 0; i < A.size(); i++) { sum += A[i]; int later = sum % K; if (hash.count(later)) { ans += hash[later]; } hash[later]++; } return ans; }
这个解法用到了同余定理,说实话 我还有点懵
等我弄懂了在更新转载地址:http://naqtz.baihongyu.com/