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};
}
};