Search for a Range
2015-12-15 14:12
232 查看
Search for a Range
Given a sorted array of integers, find the starting and ending position of a given target value.
Your algorithm's runtime complexity must be in the order of O(log n).
If the target is not found in the array, return
For example,
Given
return
使用二分查找先查找左边界,然后查找右边界
注意:题目假设target value一定可以找到,所以,不需要判断标记是否出界
Given a sorted array of integers, find the starting and ending position of a given target value.
Your algorithm's runtime complexity must be in the order of O(log n).
If the target is not found in the array, return
[-1, -1].
For example,
Given
[5, 7, 7, 8, 8, 10]and target value 8,
return
[3, 4].
使用二分查找先查找左边界,然后查找右边界
注意:题目假设target value一定可以找到,所以,不需要判断标记是否出界
vector<int> searchRange(vector<int>& nums, int target) { int beg = 0, end = nums.size() - 1, mid = 0; vector<int> ret = {-1, -1}; // 查找左边界 while (beg <= end) { mid = beg + ((end - beg) >> 1); if (target <= nums[mid]) end = mid - 1; else beg = mid + 1; } if (nums[beg] == target) ret[0] = beg; else return ret; // 查找右边界 end = nums.size() - 1; // 从左边界开始查找 while (beg <= end) { mid = beg + ((end - beg) >> 1); if (target < nums[mid]) end = mid - 1; else beg = mid + 1; } ret[1] = end; return ret; }
相关文章推荐
- rabbitmq 基础一
- Qt 程序中显示毫秒
- 我所理解的大数据个性化推荐
- 前进,返回,后退功能实现
- StringComparision中区域性字符串的比较
- Day3之FunctionDemo2
- WINDOWS系统下四叶草CLOVER引导U盘制作
- 为什么java里用常量赋值就相等,用字符串就不等?
- 老李分享:接口测试之jmeter
- Git学习
- WPF WebBrowser控件去除滚动条
- CSS优化
- HTML-圣杯布局
- Onvif之框架生成-基于gsoap2.8.27
- 算法【4】:希尔排序(缩小增量排序)
- Varnish简介
- 关于Linux的Jiffies/Tick/HZ
- ios 3D引擎 SceneKit 开发(1) --起始篇
- IOS开发中emoji表情如何判断
- JavaScript如何获取网页url中的参数