【LeetCode 34 】 在排序数组中查找元素的第一个和最后一个位置 (中等) 二分查找

it2023-03-04  76


代码:

class Solution { public: vector<int> searchRange(vector<int>& nums, int target) { if(((!nums.size() || target<nums[0] || target>nums.back()))) //空数组,target比所有数小,比所有数大都是直接返回-1 -1 return vector<int>{-1,-1}; int pos1=lower_bound(nums.begin(),nums.end(),target)-nums.begin(); //第一个大于等于target的数 if(nums[pos1]!=target) return vector<int>{-1,-1}; //不存在target,返回-1 -1 int pos2=upper_bound(nums.begin(),nums.end(),target)-nums.begin(); //第一个大于target的数 return vector<int>{pos1,pos2-1}; //存在pos1必定存在pos2,pos2为第一个大于target的数,所以要-1 } };

最新回复(0)