具体思想:
前缀和+记忆化,自己又忘了。。。
问题在于同余上;
4-(-1)=3;
则要求4和-1同余相同;
但是cpp负数去模需要转换;
具体代码:
class Solution {
public:
int subarraysDivByK(vector<int>& nums, int k) {
unordered_map<int,int>mp;
mp.insert({0,1});
int sum=0;
int ret=0;
for(int i=0;i<nums.size();i++){
sum+=nums[i];
int mod=(sum%k+k)%k;
if(mp.count(mod)){
ret+=mp[mod];
}
mp[mod]++;
}
return ret;
}
};