思路和时间复杂度
- 思路:先找到中间数,如果没找到就返回{-1,-1},如果找到了就以当前节点为中点,向两边扩
- 时间复杂度:

代码
class Solution {
public:vector<int> searchRange(vector<int>& nums, int target) {vector<int> res;if(nums.size() == 0) return {-1,-1};// 左闭右开int left = 0, right = nums.size();int cur = -1;while(left < right){int mid = (left + right) / 2;if(nums[mid] < target){left = mid + 1;}else if(nums[mid] > target){right = mid;}else{cur = mid;break;}}if(cur == -1) return {-1,-1};left = cur;right = cur;for(int i = cur; i >= 0; i--){if(nums[i] != target){break;}else{left=i;}}for(int i = cur; i < nums.size(); i++){if(nums[i] != target){break;}else{right=i;}}return {left, right};}
};