java語言描述
class Solution {
//兩次二分查找 二段式
public int[] searchRange(int[] nums, int target) {
int[] targetRange = {-1, -1};
if(nums==null || nums.length==0)
return targetRange;
int l=0 , r=nums.length-1;
while(l<r){
//找出第一個(gè)target出現(xiàn)的下標(biāo)
//范圍縮小到target左邊的區(qū)間桦卒,輸出區(qū)間的右端點(diǎn)
int mid=(l+r)/2;
if(nums[mid]>=target)
r=mid;
else
l=mid+1;
}
if(nums[r]!=target)
return targetRange;
int start=r;
int a=0 , b=nums.length-1;
while(a<b){
//找出最后一個(gè)target出現(xiàn)的下標(biāo)
//范圍縮小到target右邊的區(qū)間,輸出區(qū)間的左端點(diǎn)
int mid=(a+b+1)/2;
if(nums[mid]<=target)
a=mid;
else
b=mid-1;
}
int end=a;
return new int[]{start,end};
}
}