Search for a Range
来源:互联网 发布:墨子卫星 知乎 编辑:程序博客网 时间:2024/06/06 01:04
-----QUESTION-----
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
If the target is not found in the array,return [-1,-1]
.
For example,
Given [5,7, 7, 8, 8, 10]
return [3,4]
.
-----SOLUTION-----
class Solution {public: vector< int > searchRange(int A[], int n, int target) { //二分找最左端,再二分找最右端。 result.clear(); binarySearchLeft(A,-1,n,target); if(result[0]!=-1) binarySearchRight(A,-1,n,target); return result; } void binarySearchLeft(int A[], int start, int end, int target){ //find the first value == target if (start+1 == end){ if(end >= n || A[end]!=target){ result.push_back(-1); result.push_back(-1); } else result.push_back(end); return; } int mid = start + ((end-start)>>1); if (A[mid] < target) binarySearchLeft(A, mid, end, target); else binarySearchLeft(A, start, mid, target); } void binarySearchRight(int A[], int start, int end, int target){ //find the first value == target if (start+1 == end){ result.push_back(start); return; } int mid = start + ((end-start)>>1); if (A[mid] > target) binarySearchRight(A, start, mid, target); else binarySearchRight(A, mid, end, target); }private: vector< int > result;};
0 0
- Search for a Range
- Search for a Range
- Search for a Range
- Search for a Range !!!
- Search for a Range
- Search for a Range
- Search For A Range
- Search for a Range
- Search for a Range
- Search for a Range
- Search for a Range
- Search for a Range
- Search for a Range
- Search for a Range
- Search for a Range
- Search for a Range
- Search for a Range
- Search for a Range
- SkyEye模拟器开发环境搭建
- Python程序分析
- Java 子类 继承 父类 所有属性、方法
- 用RadioGroup实现底栏Tab
- 对一个正整数作如下操作:如果是偶数则除以2,如果是奇数则加1,如此进行直到1时操作停止,求经过9次操作变为1的数有多少个?
- Search for a Range
- 即时通讯技术概述 (IMPP、IRCP、CPIM、SIMPLE、XMPP、XML、SIP、Jabbe
- 闲谈图片服务器及独立网站为什么要使用图片服务器?
- cuda访谈
- 应收发票没有到总帐
- 运放的关键参数
- 图片和文字透明问题
- Android Library Project 使用问题总结
- Netty3 源码分析 - 套接字绑定实现原理