Consecutive null valors identifier - Suggestions

• 01-23-2012, 04:40 PM
Bonfy
Consecutive null valors identifier - Suggestions
Hi all,
I'm trying to write a boolean method that examines an Array and checks if there are n consecutive null values in it. So if i've got an array called test like this:[2, null, null, 67, 31, null, null, null, 5] and I call test.consecutives(3) it should return true, but if i call test.consecutives(4) it should give me false. Method below for reference.
Now this method actually works (or seems so), I made it by myself, but I think it's a lot messy. Do you think there's a better way to write it?

Code:

```public boolean consecutives(int n)         {                 int t=0;                 for (int i=0; i<arrayLenght-(n+1); i++)                 {                         for(int k=0; k<=n; k++)                                 if (arrayName[i+k] == null)                                         t++;                         if (t==n+1)                                                         return true;                 }                 return false;         }```
• 01-23-2012, 04:46 PM
KevinWorkman
Re: Consecutive null valors identifier - Suggestions
You could split your method up into smaller methods. Perhaps a helper method that only tests whether there are n nulls at some index in an array?
• 01-23-2012, 05:12 PM
JosAH
Re: Consecutive null valors identifier - Suggestions
Suppose that you have found k values equal to null, for k < n; the search started at position i; the next location to start your search is i+k+1, not i+1 as in your implementation. If you have found n values equal to null, your algorithm can terminate.

kind regards,

Jos
• 01-23-2012, 05:38 PM
Bonfy
Re: Consecutive null valors identifier - Suggestions
Quote:

Originally Posted by JosAH
Suppose that you have found k values equal to null, for k < n; the search started at position i; the next location to start your search is i+k+1, not i+1 as in your implementation. If you have found n values equal to null, your algorithm can terminate.

kind regards,

Jos

Thank you but actually I don't know how to make the for loop to skip k values and start at i+k+1 instead of i+1.
Also, I noticed there's some error in my code so the working one should be this:
Code:

```public boolean consecutives(int n)     {         int t=0;         for (int i=0; i<arrayLenght-(n+1); i++)         {             for(int k=0; k<n; k++)  //Modified k<=n in k<n                 if (arrayName[i+k] == null)                     t++;             if (t==n)                  //Modified t==n+1 in t==n                             return true;         }         return false;     }```
• 01-23-2012, 06:50 PM
JosAH
Re: Consecutive null valors identifier - Suggestions
Quote:

Originally Posted by Bonfy
Thank you but actually I don't know how to make the for loop to skip k values and start at i+k+1 instead of i+1.

Give it a try, because that small change changes the big-Oh performance from O(n^2) to O(n).

kind regards,

Jos