设为首页 加入收藏

TOP

leetcode 二分查找 Search for a Range
2015-07-20 17:30:37 来源: 作者: 【 】 浏览:3
Tags:leetcode 二分 查找 Search for Range

Search for a Range

Total Accepted: 21480 Total Submissions: 78454My Submissions

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].


题意:在一个排好序的数组,找给定值的起始下标和结束下标
思路:二分查找
先用lower_bound找到起始下标
再用upper_bound找到结束下标
lower_bound和upper_bound的实现参见《stl 源码剖析》
复杂度:时间O(log n) 空间O(1)

vector
  
    searchRange(int A[], int n, int target){
	int l = distance(A, lower_bound(A, A + n, target));
	int u = distance(A, upper_bound(A, A + n, target));
	vector
   
     res; if(A[l] != target){ res.push_back(-1); res.push_back(-1); }else{ res.push_back(l); res.push_back(u - 1); } return res; }
   
  



】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇hdu3182 状态压缩水题 下一篇C++ 之 exception

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容:

·“我用Java 8”已成 (2025-12-26 11:19:54)
·下载 IntelliJ IDEA (2025-12-26 11:19:52)
·Java是什么?(通俗 (2025-12-26 11:19:49)
·雾里看花:真正意义 (2025-12-26 10:54:36)
·C++——模板(超详细 (2025-12-26 10:54:34)