Java > Array-3 > linearIn (CodingBat Solution)

Problem:

Given two arrays of ints sorted in increasing order, outer and inner, return true if all of the numbers in inner appear in outer. The best solution makes only a single "linear" pass of both arrays, taking advantage of the fact that both arrays are already in sorted order.

linearIn({1, 2, 4, 6}, {2, 4}) → true
linearIn({1, 2, 4, 6}, {2, 3, 4}) → false
linearIn({1, 2, 4, 4, 6}, {2, 4}) → true


Solution:

public boolean linearIn(int[] outer, int[] inner) {
  int numFound = 0;
  if(inner.length == 0) {
     return true;
  }
 
  int k = 0;
  for(int i = 0; i < outer.length; i++) {
     if(outer[i] == inner[k]) {
        numFound++;
        k++;
     } else if(outer[i] > inner[k]) {
        return false;
     }
    
     if(numFound == inner.length)
        return true;
  }
     
  return false;
}

No comments:

Post a Comment