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