leetcode
来源:互联网 发布:sql server access 编辑:程序博客网 时间:2024/05/22 01:40
Question34–Search for a Range
给定一个按升序排列的可以有重复元素的数组,同时给出一个目标元素target,返回target在数组中的开始下标和结束下标。若不在数组中,返回[-1,-1]. eg:[1,2,2,4,5,5,7]和5,则返回[4,5]。
算法
- 使用二分法,缩小区间,直到中间位置为target。
- 分别在找到target的那个区间的左、右区间进行二分查找,确定target的开始位置和结束位置。
Code
vector<int> searchRange(vector<int>& nums, int target) { int i=0, j=nums.size()-1; int start=-1, end=-1; while(i<=j){ int mid=(i+j)/2; if(target<nums[mid]) j=mid-1; else if(target>nums[mid]) i=mid+1; else{ int p,q; p=i; q=mid; while(p<q){ int leftmid=(p+q)/2; if(nums[leftmid]==target) q=leftmid; if(nums[leftmid]<target) p=leftmid+1; } start=q; p=mid; q=j; while(p<q){ int rightmid=(p+q+1)/2; if(nums[rightmid]==target) p=rightmid; if(nums[rightmid]>target) q=rightmid-1; } end=p; break; } } vector<int> range{start,end}; return range; }
阅读全文
0 0
- leetcode
- [leetcode]
- LeetCode
- leetcode
- leetcode
- leetcode:
- leetcode:
- LeetCode
- leetcode
- LEETCODE
- leetcode
- leetCode
- leetcode
- [leetcode]
- LeetCode
- leetcode
- leetcode:
- leetcode
- Spring task quartz 定时任务的几种实现
- 关于unbuntu 安装APP失败 错误400的不完整解决方法
- Netty4实战第十章:Netty应用的单元测试
- C语言 求标准偏差
- Django的form表单
- leetcode
- 嵌入式socketiocpp lib交叉编译
- EL表达式和JSTL标签
- 文章标题
- 道路依旧
- [NOIP2017模拟]Problem
- 手机新软件指引实现步骤
- hdu2255 奔小康赚大钱(KM)
- gulp之向项目中添加 icon 图标