34. Search for a Range

binary search

class Solution {
    public int[] searchRange(int[] nums, int target) {


        int leftBound = -1, rightBound = -1;
        int[] ans = new int[2];
        ans[0] = leftBound;
        ans[1] = rightBound;
        if (nums == null || nums.length == 0) return ans;

        int n = nums.length;
        int left = 0, right = n - 1;

        while (left + 1 < right){
            int mid = left + (right - left) / 2;

            if (nums[mid] < target){
                left = mid;
            }
            else if (nums[mid] > target){
                right = mid;
            }
            else{
                right = mid;
            }
        }

        if (nums[left] == target){
            leftBound = left;
        }
        else if (nums[right] == target){
            leftBound = right;
        }

        left = 0;
        right = n - 1;

        while (left + 1 < right){
            int mid = left + (right - left) / 2;

            if (nums[mid] < target){
                left = mid;
            }
            else if (nums[mid] > target){
                right = mid;
            }
            else{
                left = mid;
            }
        }

        if (nums[right] == target){
            rightBound = right;
        }
        else if (nums[left] == target){
            rightBound = left;
        }

        ans[0] = leftBound;
        ans[1] = rightBound;

        return ans;
    }
}

results for ""

    No results matching ""