Search for a Range
来源:互联网 发布:有了域名怎么建网站 编辑:程序博客网 时间:2024/06/05 06:20
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]
.
题目解析:
(1)主要是迭代的利用二分查找
#include <iostream>#include <vector>using namespace std;int searchPos(int A[],int begin,int end,int target){int pos = -1;while(begin <= end){int mid = (begin+end)/2;if(A[mid] == target){pos = mid;break;}if(A[mid] < target){begin = mid+1;}if(A[mid] > target){end = mid -1;}}return pos;}vector<int> searchRange(int A[], int n, int target) {vector<int> result;int begin = 0;int end = n-1;int pos = searchPos(A,begin,end,target);if(pos == -1){result.push_back( -1);result.push_back( -1);return result;}else{int q = pos;int p = q;while( (p = searchPos(A,0,q-1,target))!=-1){q = p;}result.push_back(q);q = pos;p = q;while( (p = searchPos(A,q+1,n-1,target))!=-1){q = p;}result.push_back(q);return result;}}int main(void){int A[] = {5, 7, 7, 8, 8, 10};vector<int> result = searchRange(A,sizeof(A)/sizeof(int), 8);cout <<"[" << result[0] <<"," << result[1] <<"]" << endl;system("pause");return 0;}
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
- 【产品经理】产品经理使用Axure工具经验谈
- 启程
- 8个8通过加减乘除得到1000 深搜+剪枝 算法实现
- java网络编程
- 删除两个双向链表值相同的结点
- Search for a Range
- 《抑郁自白》
- 海盗分金
- iphone 6分辨率
- 分布式缓存-Memcached
- 杭电acm2020绝对值排序
- Javascript定时器(一)——单线程
- Javascript定时器(一)——单线程
- source insight快捷键及使用技巧