package com.interview.algorithms.array;
/**
* Created_By: stefanie
* Date: 14-11-10
* Time: 上午3:39
*/
public class C4_80_SearchforARange {
public static int[] search(int[] array, int target){
int[] range = new int[2];
int low = 0, high = array.length - 1, mid;
while(low + 1 < high){ //binarysearch for the low bound
mid = (low + high) / 2;
if(array[mid] >= target) high = mid;
else low = mid;
}
if(array[low] == target) range[0] = low;
else if(array[high] == target) range[0] = high;
else {
range[0] = range[1] = -1;
return range;
}
if(range[0] + 1 >= array.length){ //if range[0] is already the end of array
range[1] = range[0];
return range;
}
low = range[0] + 1; //binarysearch for the high bound
high = array.length - 1;
while(low + 1 < high){
mid = (low + high) / 2;
if(array[mid] <= target) low = mid;
else high = mid;
}
if(array[high] == target) range[1] = high;
else if(array[low] == target) range[1] = low;
else range[1] = range[0];
return range;
}
}