Problem: Given a list of non-negative numbers and a target integer k, write a function to check if the array has a continuous subarray of size at least 2 that sums up to the multiple of k, that is, sums up to n*k where n is also an integer.
Example 1:
Input: [23, 2, 4, 6, 7], k=6 Output: True
Explanation: Because [2, 4] is a continuous subarray of size 2 and sums up to 6.
Example 2:
Input: [23, 2, 6, 4, 7], k=6 Output: True
Explanation: Because [23, 2, 6, 4, 7] is an continuous subarray of size 5 and sums up to 42.
Mycode:
class Solution {
public boolean checkSubarraySum(int[] nums, int k) {
int curSum=nums[0];
int start=0;
int k1=Math.abs(k);
for(int i=1;i<nums.length;i++){
while (curSum>k1 && start<i-1){
curSum = curSum - nums[start];
start++;
}
if(k1>0 && (curSum%k1)==0){
return true;
}
if(curSum==0 && k1==0){
return true;
}
curSum=curSum+nums[i];
}
return false;
}
}
My solution cannot pass this testcase input={0,1,0} k=0. My output true. Expected output :False. How can I introduce this boundary condition as per my code?
I follow this. But there is nothing which discuss about this Test case.
Thank you in advance