1. 题目链接
34. 在排序数组中查找元素的第一个和最后一个位置
2. 题目描述
3. 解题方法
- 找到元素的第一个位置,也就是找大于等于目标的最小值
- 找到元素的最后一个位置,也就是找小于等于目标的最大值
- 可以利用2次二分查找来解决
3.1. 第一次查找
3.2. 第二次查找
4. 代码
class Solution {
public:vector<int> searchRange(vector<int>& nums, int target) {vector<int> res;if(nums.size() == 0) return {-1, -1};int l = 0, r = nums.size() - 1;while(l < r){int mid = (r - l) / 2 + l;if(nums[mid] >= target) r = mid;else l = mid + 1;}if(nums[r] != target) return {-1, -1};else res.push_back(r);l = 0, r = nums.size() - 1;while(l < r){int mid = (r - l + 1) / 2 + l;if(nums[mid] <= target) l = mid;else r = mid - 1;}res.push_back(r);return res; }
};