博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
61. Search for a Range【medium】
阅读量:5109 次
发布时间:2019-06-13

本文共 2296 字,大约阅读时间需要 7 分钟。

61. Search for a Range【medium】

Given a sorted array of n integers, find the starting and ending position of a given target value.

If the target is not found in the array, return [-1, -1].

Example

Given [5, 7, 7, 8, 8, 10] and target value 8,

return [3, 4].

Challenge 

O(log n) time.

 

解法一:

1 class Solution { 2 public: 3     /* 4      * @param A: an integer sorted array 5      * @param target: an integer to be inserted 6      * @return: a list of length 2, [index1, index2] 7      */ 8     vector
searchRange(vector
&A, int target) { 9 if (A.empty()) {10 return vector
(2, -1);11 }12 13 vector
result;14 15 //find first16 int start = 0;17 int end = A.size() - 1;18 19 while (start + 1 < end) {20 int mid = start + (end - start) / 2;21 if (A[mid] == target) {22 end = mid;23 }24 else if (A[mid] < target) {25 start = mid;26 }27 else if (A[mid] > target) {28 end = mid;29 }30 }31 32 if (A[start] == target) {33 result.push_back(start);34 }35 else if (A[end] == target) {36 result.push_back(end);37 }38 else {39 return vector
(2, -1);40 }41 42 //find last43 start = 0;44 end = A.size() - 1;45 46 while (start + 1 < end) {47 int mid = start + (end - start) / 2;48 if (A[mid] == target) {49 start = mid;50 }51 else if (A[mid] < target) {52 start = mid;53 }54 else if (A[mid] > target) {55 end = mid;56 }57 }58 59 if (A[end] == target) {60 result.push_back(end);61 }62 else if (A[start] == target) {63 result.push_back(start);64 }65 66 return result;67 }68 };

 

转载于:https://www.cnblogs.com/abc-begin/p/7552573.html

你可能感兴趣的文章
Android-多线程AsyncTask
查看>>
第一个Spring冲刺周期团队进展报告
查看>>
C++函数基础知识
查看>>
红黑树 c++ 实现
查看>>
Android 获取网络链接类型
查看>>
linux中启动与终止lnmp的脚本
查看>>
gdb中信号的处理[转]
查看>>
LeetCode【709. 转换成小写字母】
查看>>
如何在Access2007中使用日期类型查询数据
查看>>
Jzoj4757 树上摩托
查看>>
CF992E Nastya and King-Shamans(线段树二分+思维)
查看>>
oracle 几个时间函数探究
查看>>
第一个Java Web程序
查看>>
树状数组_一维
查看>>
如果没有按照正常的先装iis后装.net的顺序,可以使用此命令重新注册一下:
查看>>
linux install ftp server
查看>>
嵌入式软件设计第8次实验报告
查看>>
算法和数据结构(三)
查看>>
Ubuntu下的eclipse安装subclipse遇到没有javahl的问题...(2天解决了)
查看>>
alter database databasename set single_user with rollback IMMEDIATE 不成功问题
查看>>