[LeetCode] Search for a Range [34]

题目

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

原题链接(点我)

解题思路

查找一个数出现的范围,给一个排好序的数组和一个数,找出这个数在数组中出现的范围。
这个题直接使用一次遍历就能够得到结果,这种时间复杂度为O(n)。可是对于有序数组我们一般能够使用二分查找能够得到更好的O(logn)的时间复杂度。我们能够使用二分查找找到这个数第一次出现的位置和这个数最后一次出现的位置,这样就能够得到它出现的区间。

代码实现

class Solution {
public:vector<int> searchRange(int A[], int n, int target) {vector<int> ret;if(A==NULL || n<=0) return ret;int first = getFirst(A, n, target);int last = getLast(A, n, target);ret.push_back(first);ret.push_back(last);return ret;}int getFirst(int A[], int n, int target){int begin = 0, end = n-1;int mid;while(begin<=end){int mid = (begin+end)/2;if(A[mid] == target){if(mid==0 || A[mid-1]<A[mid])return mid;elseend = mid-1;}else if(A[mid] < target)begin = mid+1;elseend = mid-1;}return -1;}int getLast(int A[], int n, int target){int begin = 0, end = n-1;int mid;while(begin<=end){int mid = (begin+end)/2;if(A[mid] == target){if(mid==n-1 || A[mid+1]>A[mid])return mid;elsebegin = mid+1;}else if(A[mid] < target)begin = mid+1;elseend = mid-1;}return -1;}
};

假设你认为本篇对你有收获,请帮顶。
另外,我开通了微信公众号--分享技术之美,我会不定期的分享一些我学习的东西.
你能够搜索公众号:swalge 或者扫描下方二维码关注我

(转载文章请注明出处: http://blog.csdn.net/swagle/article/details/30466235 )

转载于:https://www.cnblogs.com/mfrbuaa/p/3948216.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/432348.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

linux ssh注册码,linux ssh -l 命令运用

ssh是远程登录命令&#xff0c;-l选项是最常用的选项&#xff0c;下面是我的一些总结远程登录&#xff1a;ssh -l userName ip# 远程登录到 10.175.23.9ssh -l root2 10.175.23.9执行远程命令(不登录)&#xff1a;ssh -l userName ip command# 不远程登录到 10.175.23.9…

【OpenGL】向Shader中传递数据

传递顶点属性信息之前讲过&#xff0c;vertex shader会被每个顶点调用&#xff0c;通常一个顶点会包含很多信息&#xff0c;例如顶点坐标、顶点法向量、纹理坐标等等&#xff0c;我们称这些信息为顶点的属性。在之前的OpenGL版本里&#xff0c;每个属性都对应了一个特定的通道&…

常用正则表达式大全

匹配中文字符的正则表达式&#xff1a; [u4e00-u9fa5]   评注&#xff1a;匹配中文还真是个头疼的事&#xff0c;有了这个表达式就好办了   匹配双字节字符(包括汉字在内)&#xff1a;[^x00-xff]   评注&#xff1a;可以用来计算字符串的长度&#xff08;一个双字节字符…

linux+qt+定时精度,Qt QTimer测试定时精度

调试信息输出窗口可以查看超时误差dialog.h文件#ifndef DIALOG_H#define DIALOG_H#include #include namespace Ui {class Dialog;}class QTimer;class Dialog : public QDialog{Q_OBJECTpublic:explicit Dialog(QWidget *parent 0);~Dialog();public slots:void slotOneSec()…

初始JavaScript详解【精选】

Hi i,m JinXiang ⭐ 前言 ⭐ 本篇文章主要介绍初始JavaScript以及部分理论知识 &#x1f349;欢迎点赞 &#x1f44d; 收藏 ⭐留言评论 &#x1f4dd;私信必回哟&#x1f601; &#x1f349;博主收将持续更新学习记录获&#xff0c;友友们有任何问题可以在评论区留言 目录 ⭐…

最简单的基于FFmpeg的AVDevice例子(屏幕录制)

最简单的基于FFmpeg的AVDevice例子文章列表&#xff1a;最简单的基于FFmpeg的AVDevice例子&#xff08;读取摄像头&#xff09;最简单的基于FFmpeg的AVDevice例子&#xff08;屏幕录制&#xff09;&#xfeff;&#xfeff;FFmpeg中有一个和多媒体设备交互的类库&#xff1a;Li…

linux 挂载32T文件系统,linux Centos下磁盘分区及文件系统创建与挂载(示例代码)

linux Centos下磁盘分区及文件系统创建与挂载MBR(Master Boot Record)是传统的分区机制&#xff0c;应用于绝大多数使用BIOS的PC设备。1.MBR支持32bit和64bit系统2.MBR支持分区数量有限3.MBR只支持不超过2T的硬盘&#xff0c;超过2T的硬盘只能使用2T空间(使用其他方法)1.主分区…

C语言的数组初始化

http://blog.csdn.net/sibylle/article/details/2026915 一直以为 int a[256]{0};是把a的所有元素初始化为0&#xff0c;int a[256]{1};是把a所有的元素初始化为1.调试的时查看内存发现不是那么一回事.5.2.1 数组初始化 数组可以用一个列值来初始化&#xff0c;例如 …

【OpenGL】GLSL中的函数和子程序(subroutines)

这篇文章里讲一下在GLSL如何使用函数和子程序&#xff08;subroutines&#xff09;。在GLSL中使用函数 GLSL支持函数&#xff0c;它们的语法结构和C很相似。但是调用约定会有所不同。下面&#xff0c;我们以一个普通的ADS&#xff08;ambient&#xff0c;diffuse&#xff0c;sp…

linux7 共享盘创建,使用CentOS7建立samba文件共享服务器

1、安装samba检查samba是否已经安装[rootbak1 ~]# rpm -qa | grep samba没有任何回显则表示未安装软件包 sambayum安装samba[rootbak1 ~]# yum -y install samba samba-client samba-common再次检查安装结果[rootbak1 var]# rpm -qa | grep sambasamba-common-libs-4.6.2-12.el…

批量造数据的一种方法

实现目的&#xff1a;一张表Table中有A、B、C三个字段&#xff0c;并有很多值&#xff0c;开发测试需要&#xff0c;可以执行这样的语句批量复制插入数据&#xff1a; insert into Table(A,B,C)select A,B,C from Table 转载于:https://www.cnblogs.com/tianqy/p/3965292.html

【Modern OpenGL】第一个三角形

>说明&#xff1a;跟着learnopengl的内容学习&#xff0c;不是纯翻译&#xff0c;只是自己整理记录。>强烈推荐原文&#xff0c;无论是内容还是排版。 [原文链接](http://learnopengl.com/#!Getting-started/OpenGL)本文地址&#xff1a;http://blog.csdn.net/aganlengzi…

13c语言中的文件是一种流式文件,读写时均以字符为单位.,C语言判断题部分.doc...

C语言判断题部分?第一章C语言中&#xff0c;字符数据用格式说明"%c"来输出&#xff0c;字符串数据用格式说明"%s"来输出。TC语言中&#xff0c;关键字及编译预处理命令用小写字母书写。T二元运算符均可以和赋值运算符构成复合的赋值运算符。TC语言中&…

UI Automation 简介

转载&#xff0c;源地址&#xff1a; http://blog.csdn.net/ffeiffei/article/details/6637418 MS UI Automation&#xff08;Microsoft User Interface Automation&#xff1a;UIA&#xff09;是随.net framework3.0一起发布的&#xff0c;虽然在如今这个几乎每天都有各种新名…

【OpenGL4.0】GLSL渲染语言入门与VBO、VAO使用:绘制一个三角形

以前都是用Cg的&#xff0c;现在改用GLSL&#xff0c;又要重新学&#xff0c;不过两种语言很多都是相通的。下面的例子是实现绘制一个三角形的简单程序。采用了VBO&#xff08;veretx buffer object&#xff09;、VAO&#xff08;vertex array object&#xff09;等OpenGL的一些…

catia linux下载64位,CATIA V5 CATSysDemon.exe缓冲区溢出漏洞

发布日期&#xff1a;2014-02-24更新日期&#xff1a;2014-02-25受影响系统&#xff1a;3ds catia-v5描述&#xff1a;--------------------------------------------------------------------------------CATIA是数字产品定义及生命周期管理使用的CAD、CAE、CAM应用集成软件包…

eclipse 中文乱码

eclipse 中页面中中文正常预览出现中文乱码 解决方法&#xff1a; windows->preferences->general->content types->text(展开)选择页面我的是php页面就选择phpcontent type 在窗口下面default encoding 中输入gbk 。点击update 就可以了转载于:https://www.cnblog…

【Modern OpenGL】Shader

Shaders 正如在上一篇教程中提到的&#xff0c;shader是在GPU中运行的小程序。如上一个教程中实现的最简单的vertex shader和fragment shader&#xff0c;一个shader基本上负责图形渲染流水线中的一个阶段的功能。从根本上来说&#xff0c;shader就是将输入转化成输出的操作。而…

c语言编译的手机软件,C语言编译工具

软件介绍C语言编译工具app是一款功能十分强大的手机编译、更换代码的软件工具&#xff0c;C语言编译工具app可以快速进行代码翻译、代码查找、替换等&#xff0c;它支持多种代码语言&#xff0c;欢迎下载&#xff01;C语言编译工具app内容简单方便功能强大的代码编译器&#xf…

2014.9.13模拟赛【数位和乘积】

数位和乘积(digit.cpp/c/pas) 【题目描述】 一个数字的数位和乘积为其各位数字的乘积。求所有的N位数中有多少个数的数位和乘积恰好为K。请注意&#xff0c;这里的N位数是可以有前导零的。比如01&#xff0c;02视为二位数&#xff0c;但是他们的数位和乘积都是0。 【输入格式】…