vendredi 8 février 2019

Boundary condition test case not pass - Continuous subArray sum

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

Aucun commentaire:

Enregistrer un commentaire