523. 连续的子数组和
力扣类似这样的题目实在是不少,
子串使用前缀和的思想,为了记录,使用unordered_mao
。
class Solution {
public:
bool checkSubarraySum(vector<int>& a, int k) {
if(k==0){
int t = 0;
for(int i=0;i<a.size();i++){
if(a[i]==0){
if(++t==2) return true;
}else t = 0;
}
return false;
}
unordered_map<int,int> vis;
int t = 0;
vis[0] = -1;
for(int i=0;i<a.size();i++){
t = (t+a[i])%k;
if(vis.find(t)!=vis.end()){
if(i-vis[t]>=2) return true;
}else {
vis[t] = i;
}
}
return false;
}
};