Jack Li's Blog

0034. Find First and Last Position of Element in Sorted Array

class Solution {
public:
    int binarySearch(vector<int>& nums, int target, bool isSame){
        int left = 0;
        int right = nums.size() - 1;
        int mid;

        int index = -1;

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

            if(nums[mid] == target){
                index = mid;
                if(isSame) right = mid - 1;
                else left = mid + 1;
            } else if (nums[mid] > target){
                right = mid - 1;
            } else {
                left = mid + 1;
            }
        }

        return index;
    }

    vector<int> searchRange(vector<int>& nums, int target) {
        int left = binarySearch(nums, target, true);
        if(left == -1) return {-1, -1};
        int right = binarySearch(nums, target, false);
        return {left, right};
    }
};