给定一个包含非负数的数组和一个目标整数 k,编写一个函数来判断该数组是否含有连续的子数组,其大小至少为 2,总和为 k 的倍数,即总和为 n*k,其中 n 也是一个整数。
输入1:
[23,2,4,6,7], k = 6
输出1:
True
输入2:
[23,2,6,4,7], k = 6
输出2:
True
class Solution {
public:
bool checkSubarraySum(vector<int>& nums, int k) {
int size=nums.size();
if(size==0)return false;
vector<int> dp(size,0);
dp[0]=nums[0];
for(int i=1;i<size;i++){
dp[i]=dp[i-1]+nums[i];
if(k!=0&&dp[i]%k==0){
return true;
}
if(k==0&&dp[i]==0){
return true;
}
for(int j=0;j<i-1;j++){
if(k!=0&&(dp[i]-dp[j])%k==0){
return true;
}
if(k==0&&(dp[i]-dp[j])==0){
return true;
}
}
}
return false;
}
};