My binary search solution:
class Solution { public int[] searchRange(int[] nums, int target) { if(nums==null || nums.length==0) return new int[]{-1,-1}; int l =0, r = nums.length-1; while(l+1<r){ int mid = (l+r)/2; if(nums[mid]>=target) r=mid; else l=mid; } int start = -1; if(nums[l]==target) start=l; else if(nums[r]==target) start=r; if(start!=-1){ int end = start; for(int i=start+1;i<nums.length;i++){ if(nums[i]==target) end++; } return new int[]{start, end}; } else return new int[]{-1,-1}; } }