【LeetCode刷题】Day 17
题目1:976.和可被k整除的子数组
思路分析:
大体思路和上一道题基本相同,只是在处理数值时候不相同。
这里要补充两个点:
所以这里,我们注意好这两个点,就可以顺利解决。
思路1:前缀和+哈希表
代码实现:
class Solution {
public:
int subarraysDivByK(vector<int>& nums, int k) {
//前缀和+哈希表
unordered_map<int,int> hash;
int sum=0 , ret=0;
hash[0] = 1;
for(auto i : nums)
{
sum+=i;
if(hash.count((sum%k+k)%k)) ret+=hash[(sum%k+k)%k];
hash[(sum%k+k)%k]++;
}
return ret;
}
};