这一题乍一看很简单,确实有很多坑:
(1) k为integer,如果求 mode的话,k==0是不可以使用的;
(2) 并且至少两个数相加才可以,判断只能在第二个for循环里面。
(3) nums可能为空;
(4) nums的size为1的时候,肯定不包括两个数目相加等于k。
bool checkSubarraySum(vector<int>& nums, int k) {
if(nums.size() == 0) return false;
int sum = 0;
for(int i=0;i<nums.size();i++) {
sum += nums[i];
for(int j=i+1;j<nums.size();j++){
sum += nums[j];
if(k==0) {
if(sum != 0)
break;
else
return true;
}
if(sum % k == 0)
return true;
}
sum = 0;
}
return false;
}