class Solution {
public int[] searchRange(int[] nums, int target) {
int left = binarySearch(nums , target-1);
int right = binarySearch(nums , target) -1 ;
if(left<=right && nums[left] == target){
return new int[]{left , right};
}
return new int[]{-1,-1};
}
private int binarySearch(int[] nums , int target){
int left = 0 ;
int right = nums.length - 1 ;
int rt = nums.length;
while(left <= right){
int mid = (left + right) / 2 ;
if(nums[mid] > target){
right = mid - 1 ;
rt = mid;
}else{
left = mid + 1 ;
}
}
return rt;
}
}
class Solution {
public int search(int[] nums, int target) {
int n = nums.length;
if(n == 0)
return -1;
if(n == 1)
return nums[0] == target ? 0 : -1;
int left = 0 , right = n-1 ;
while(left <= right){
int mid = (left + right) / 2;
if(nums[mid] == target)
return mid;
if(nums[0] > nums[mid]){
if(nums[mid] < target && target <= nums[n-1]){
left = mid + 1 ;
}else{
right = mid-1 ;
}
}else{
if(nums[mid] > target && target >= nums[0] ){
right = mid -1 ;
}else{
left = mid + 1 ;
}
}
}
return -1;
}
}