34. Find First and Last Position of Element in Sorted Array
class Solution {
public int[] searchRange(int[] nums, int target) {
return new int[]{searchFirstPosition(nums, target), searchLastPosition(nums, target)};
}
private int searchFirstPosition(int[] nums, int target){
int start = 0;
int end = nums.length;
while(start<end){
int mid = (start+end)/2;
if (nums[mid] == target && (mid == 0 || nums[mid-1]<target)) return mid;
if (target<=nums[mid]){
end = mid;
}else{
start = mid+1;
}
}
return -1;
}
private int searchLastPosition(int[] nums, int target){
int start =0;
int end = nums.length;
while(start<end){
int mid = (start+end)/2;
if (nums[mid] == target && (mid == nums.length-1 || nums[mid+1]>target)) return mid;
if (target>=nums[mid]){
start = mid +1;
}else{
end = mid;
}
}
return -1;
}
}
Last updated
Was this helpful?