网站页面设计有哪些,wordpress上加地图,免费学网页设计,手机主页网站哪个好用题目解析
974. 和可被 K 整除的子数组 算法讲解
前置知识点#xff1a; 同余定理#xff1a;(ab) % c 0 可以得出 a % c b % cC中负数求余的结果是负数#xff0c;但是本题需要的是正数#xff0c;所以我们为了修正这个结果#xff0c;需要进行(负数 % 正数 正数) %…题目解析
974. 和可被 K 整除的子数组 算法讲解
前置知识点 同余定理(ab) % c 0 可以得出 a % c b % cC中负数求余的结果是负数但是本题需要的是正数所以我们为了修正这个结果需要进行(负数 % 正数 正数) % 正数 0~i这一段区间是sum为了寻找一段区间能够被k整除所以看一下(sum - x) % k是否能被整除由同余定理得出sum % k x % k因此我们只需要寻找这一段区间中有几个余数等于sum % k的属于需要将负数取余情况代入
class Solution {
public:int subarraysDivByK(vectorint nums, int k) {int sum 0;unordered_mapint,intHash;int ret 0;Hash[0 % k];for(auto n : nums){sum n; //计算当前位置的前缀和int r (sum % k k) % k;//修正结果if(Hash.count(r))ret Hash[r]; //当前这一段区间有多少个前缀和的余数等于sum % kHash[r];}return ret;}
};