首页 > 代码库 > Search for a Range
Search for a Range
方法:使用逼近的方法,先寻找左边边界,再找右边界,这与二分查找中边界的更新顺序相关
class Solution { public: vector<int> searchRange(vector<int>& nums, int target) { vector<int> result = {-1, -1}; int ll=0, lr=nums.size()-1; while(ll <= lr) { int mid = (ll+lr)/2; if(nums[mid] < target) ll = mid + 1; else lr = mid - 1; } int rl = 0, rr = nums.size()-1; while(rl <= rr) { int mid = (rl + rr) / 2; if(nums[mid] > target) rr = mid - 1; else rl = mid + 1; } if(ll <= rr) { result[0] = ll; result[1] = rr; } return result; } };
或者直接找到一个值后左右逼近即可。
Search for a Range
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。