博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
LeetCode 34 Search for a Range
阅读量:7297 次
发布时间:2019-06-30

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

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

 

这题比较简单,就是边界的时候范围需要注意一下,我的方法先用二分法找到那个目标所在的位置,然后从那个位置增加和减少index直到不等于目标,于是就得到一个索引范围。代码如下:

1 class Solution { 2 public: 3     vector
searchRange(vector
& nums, int target) { 4 int len = nums.size(); 5 int start = 0; 6 int end = len; 7 vector
result; 8 findStartEnd(nums,start,end,target,result); 9 if(result.size()==0){10 result.push_back(-1);11 result.push_back(-1);12 }13 return result;14 }15 16 void findStartEnd(vector
&nums,int start,int end,int target,vector
& result){17 int mid = (start+end)/2;18 if(start<=mid&&end>=mid){19 if(nums[mid]>target){20 if(start == mid) mid = mid-2;21 findStartEnd(nums,start,mid,target,result);22 }23 else if(nums[mid]
< end ;i++){30 if(nums[i]!=nums[mid]){31 tail = i-1;32 break;33 }34 tail = i;35 }36 for(int j = mid-1 ;j>=start;j--){37 if(nums[j]!=nums[mid]){38 front = j+1;39 break;40 }41 front = j;42 }43 result.push_back(front);44 result.push_back(tail);45 }46 }47 }48 };

 

转载于:https://www.cnblogs.com/yang-xiong/p/4970617.html

你可能感兴趣的文章
能够提高PHP的性能的一些注意事项
查看>>
020-请你说一说app测试的工具
查看>>
软件测试2019:第五次作业—— 安全测试(含安全测试工具实验)
查看>>
SSM框架搭建总结(2)
查看>>
Python学习(19)正则表达式
查看>>
PHP中空字符串、0、null、empty和false之间的关系
查看>>
【深度学习篇】---CNN和RNN结合与对比,实例讲解
查看>>
201771010126 王燕《面向对象程序设计(Java)》第十二周学习总结
查看>>
XAML实例教程系列 - 资源(Resources)
查看>>
LWIP互联网资料汇总
查看>>
外贸术语
查看>>
网络传输流量控制策略小结
查看>>
上传大文件
查看>>
Mybatis面试集合(转)
查看>>
分布式系统的完整介绍(一)
查看>>
考点1
查看>>
Asp.net 程序连接orcle如果在安装 32 位 Oracle 客户端组件的情况下以 64 位模式运行,...
查看>>
自己写的模板引擎,模板生成静态页面
查看>>
Android 数据库管理— — —更新数据
查看>>
014_捆绑包与显示模式
查看>>