public static int[] searchRange(int[] nums, int target) {
int l = 0;
int r = nums.length-1;
int result[] = {-1, -1};
//find first position of result
while (l < r) {
int mid = l + (r-l)/2;
if (nums[mid] < target) {
l = mid + 1;
} else if (nums[mid] > target) {
r = mid - 1;
} else {
r = mid;
}
}
if (nums.length == 0 || nums[l] != target) {
return result;
} else {
result[0] = l;
}
r = nums.length - 1;
//find second position of result
while (l < r) {
int mid = l + (r-l)/2;
if (nums[mid] < target) {
l = mid + 1;
} else if (nums[mid] > target) {
r = mid - 1;
} else {
r = mid;
}
}
result[1] = l;
return result;
}