binary search
class Solution {
public int[] searchRange(int[] nums, int target) {
int leftBound = -1, rightBound = -1;
int[] ans = new int[2];
ans[0] = leftBound;
ans[1] = rightBound;
if (nums == null || nums.length == 0) return ans;
int n = nums.length;
int left = 0, right = n - 1;
while (left + 1 < right){
int mid = left + (right - left) / 2;
if (nums[mid] < target){
left = mid;
}
else if (nums[mid] > target){
right = mid;
}
else{
right = mid;
}
}
if (nums[left] == target){
leftBound = left;
}
else if (nums[right] == target){
leftBound = right;
}
left = 0;
right = n - 1;
while (left + 1 < right){
int mid = left + (right - left) / 2;
if (nums[mid] < target){
left = mid;
}
else if (nums[mid] > target){
right = mid;
}
else{
left = mid;
}
}
if (nums[right] == target){
rightBound = right;
}
else if (nums[left] == target){
rightBound = left;
}
ans[0] = leftBound;
ans[1] = rightBound;
return ans;
}
}