LeetCode 153. Find Minimum in Rotated Sorted Array (在旋转有序数组中找到最小值)

Suppose an array sorted in ascending order is rotated at some pivot unknown to you beforehand.

(i.e., 0 1 2 4 5 6 7 might become 4 5 6 7 0 1 2).

Find the minimum element.

You may assume no duplicate exists in the array.

 


题目标签:Array, Binary Search

  题目给了我们一个 旋转有序 数组,让我们找到最小值。如果是在还没有旋转的情况下,那么我们知道,最小值就是第一个数字。

  那么当遇到旋转的情况呢,我们就需要找到那个 “断点” 的两个数字,换句话说,就是最大值和最小值,而且这两个数字一定是相邻的。

  我们来看一下例子:

  0  1  2  4  5  6  7  直接返回第一个数字

  1  2  4  5  6  7  0  返回7 和0 中小的那个数字

  2  4  5  6  7  0  1  

  4  5  6  7  0  1  2

  5  6  7  0  1  2  4

  6  7  0  1  2  4  5

  7  0  1  2  4  5  6

  利用二分法来找到 最大和最小的 两个数字。

  rule 1: 如果 mid 小于 left, 意味着最大的数字在左边,继续去左边找,把right = mid, 这里要包括mid,因为mid 可能是最小的数字;

  rule 2: 如果 mid 大于 right, 意味着最小的数字在右边,继续去右边找,把left = mid, 这里要包括mid, 因为mid 可能是最大的数字。

  当left 和right 相邻的时候,返回小的数字就可以了。

 

 

Java Solution:

Runtime beats 53.07% 

完成日期:08/30/2017

关键词:Array, Binary search

关键点:旋转中,min 和 max 必然是相邻的,利用二分法找到min 和max

 

 1 class Solution 
 2 {
 3     public int findMin(int[] nums) 
 4     {
 5         if(nums.length == 1)
 6             return nums[0];
 7         
 8         int left = 0;
 9         int right = nums.length - 1;
10         
11         if(nums[left] < nums[right])
12             return nums[0];
13         
14         while(left + 1 != right)
15         {
16             int mid = left + (right - left) / 2;
17             
18             if(nums[mid] < nums[left]) // if left is greater than mid, move to left
19                 right = mid;
20             else if(nums[mid] > nums[right]) // if mid one is greater than right, move to right
21                 left = mid;
22         }
23         
24         // if there are only two number
25         return Math.min(nums[left], nums[right]);
26     }
27 }

参考资料:N/A

 

LeetCode 算法题目列表 - LeetCode Algorithms Questions List

 

转载于:https://www.cnblogs.com/jimmycheng/p/7456345.html

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

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

相关文章

YUV图像

YUV420P&#xff0c;Y&#xff0c;U&#xff0c;V三个分量都是平面格式&#xff0c;分为 I420 和 YV12 。 I420 格式和 YV12 格式的不同处在U平面和V平面的位置不同。在I420格式中&#xff0c;U平面紧跟在Y平面之后&#xff0c;然后才是V平面&#xff08;即&#xff1a;YUV&…

色调映射(Tone Mapping)

一、概述 虽然HDR 图像有较大的动态范围,能更细致地反映真实场景,但他的缺点也很明显。一是同尺寸的数据比低动态范围图像大,需要更大的存储空间与传输带宽。二是难以输出,目前大多数显示器、打印机等图形输出设备的动态范围要比普通的高动态范围图像小得多。。因此,色调映…

实用软件工具

1.突破百度网盘下载速度现在&#xff0c;使用 Aria2下载 Aria2-不限速全平台下载利器但是百度网盘账号会被限速 &#xff0c;冲会员解除正常限制网速2.Safari 预览&#xff0c;将网页转化为自定义尺寸 PDF 3.清除Xcode 缓存 删除模拟器运行缓存&#xff0c;找到Developer->…

[原创]Toolbar setNavigationIcon无效

最近在做一个Toolbar&#xff0c;setNavigationIcon()这个方法一直无效&#xff0c;说什么的都有&#xff0c;什么getSupportActionBar().setNavigationIcon()的&#xff0c;说设置style的&#xff0c;说放到setSupportActionBar()之后的。 其实没有说全&#xff0c;还应该放到…

YUV格式详解

分类&#xff1a; H.264 MPEG TV 2008-05-14 09:24 16181人阅读 评论(21) 收藏 举报 YUV是指亮度参量和色度参量分开表示的像素格式&#xff0c;而这样分开的好处就是不但可以避免相互干扰&#xff0c;还可以降低色度的采样率而不会对图像质量影响太大。YUV是一个比较笼统地说…

KVM安装、镜像创建(一)

环境准备 VMware Workstation Pro启动虚拟化 查看启动的系统是否支持vmx或svm grep -E (vmx|svm) /proc/cpuinfo 备注&#xff1a;操作系统centos 7 KVM安装 1、yum查看kvm安装包 yum list |grep kvm 2、安装 yum install -y qemu-kvm qemu-kvm-tools libvirt3、启动libvirtd s…

Sensor 结构——前照、背照、堆栈

优异的工艺和技术可以使得即便不使用更新结构的CMOS,同样拥有更好的量子效率、固有热噪声、增益、满阱电荷、宽容度、灵敏度等关键型指标。在相同技术和工艺下,底大一级的确压死人(全画幅和aps-c)。人类的进步就是在不断发现问题,解决问题。背照式以及堆栈式CMOS的出现,也…

少犯非智力错误

工作节省时间最重要的方法之一就是少犯非智力错误。 同事反馈说不能预览&#xff0c;排查半天找不到问题&#xff0c;最后发现是IP地址配错了。 现场问题同事搞半天找不出原因&#xff0c;结果一看是网域配错了。 还有些问题开始排查定位不到原因&#xff0c;回头看时才发现端口…

搭建分布式hadoop2.x集群

前期准备&#xff1a; 1.我这里用了三台虚拟机&#xff0c;.默认已经配置好静态IP和IP域名映射&#xff0c;它们相互之间可以ping通 第一台&#xff1a;192.168.174.131 hadoopNumber01.medal.com 第二台&#xff1a;192.168.174.132 hadoopNumber02.meda.com 第三台…

ortp库使用入门

原创作品&#xff0c;允许转载&#xff0c;转载时请务必以超链接形式标明文章 原始出处 、作者信息和本声明。否则将追究法律责任。http://ticktick.blog.51cto.com/823160/345642 我们知道&#xff0c; RTP&#xff08;Real-timeTransportProtocol&#xff09;是用于Internet上…

可测性设计技术

传统的设计过程和测试过程是分开的&#xff0c;而且测试往往只在设计阶段的后期才被考虑。近年来&#xff0c;测试越来越早地被考虑并出现在设计过程中&#xff0c;被称为“可测性设计”。可测性设计的主要思路就是在设计之初就考虑关于测试方面的设计&#xff0c;并在设计阶段…

优酷电视剧爬虫代码实现一:下载解析视频网站页面(3)补充知识点:htmlcleaner使用案例...

htmlcleaner 下载地址&#xff1a;htmlcleaner2_1.jar 源码下载&#xff1a;htmlcleaner2_1-all.zip 写一个测试用的html文件&#xff1a;html-clean-demo.html <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional" "http://www.w3.org/TR/xhtml1/D…

小程序开发-利用canvas实现保存二维码海报到本机

场景及需求 在小程序开发过程中&#xff0c;经常需要实现保存某个页面为带小程序码的二维码海报图片到本地&#xff0c;然后用于分享或者发朋友圈等操作。 主要技术点及小程序相关api 技术注意事项 小程序的canvas与H5 canvas使用api大部分一致&#xff0c;但由于小程序中没有D…

Docker系统六:Docker网络管理

Docker网络 I. Docer的通信方式 默认情况下&#xff0c;Docker使用网桥&#xff08;brige&#xff09; NAT的通信模型. Docker启动时会自动创建网桥Docker0&#xff0c;并配置ip 172.17.0.1/16 ifconfig docker0 docker0 Link encap:Ethernet HWaddr 02:42:e0:31:ac:10inet …

pthread_cond_wait

1. 首先pthread_cond_wait 的定义是这样的 The pthread_cond_wait() andpthread_cond_timedwait() functions are used to block on a condition variable. They are called withmutex locked by the calling thread or undefined behaviour will result. These functions ato…

HDU 1525 Euclid's Game

题目大意&#xff1a; 题目给出了两个正数a.b 每次操作&#xff0c;大的数减掉小的数的整数倍。一个数变为0 的时候结束。 谁先先把其中一个数减为0的获胜。问谁可以赢。Stan是先手。 题目思路&#xff1a; 无论a,b的值为多少&#xff0c;局面&#xff1a;[a%b&#xff0c;b] 一…

SRAM BIST技术学习

MBIST 方法是目前大容量存储器测试的主流技术&#xff0c;该技术利用芯片内部专门设计的BIST 电路进行自动化测试&#xff0c;能够对嵌入式存储器这种具有复杂电路结构的嵌入式模块进行全面的测试。MBIST 电路将产生测试向量的电路模块以及检测测试结果的比较模块都置于芯片的内…

【Zigbee技术入门教程-02】一图读懂ZStack协议栈的核心思想与工作机理

【Zigbee技术入门教程-02】一图读懂ZStack协议栈的核心思想与工作机理 广东职业技术学院 欧浩源 Z-Stack协议栈是一个基于任务轮询方式的操作系统&#xff0c;其任务调度和资源分配由操作系统抽象层OSAL管理着。 你可以理解为&#xff1a;Z-Stack协议栈 OSAL操作系统 CC25…

CMOS图像传感器——SmartSens

近年来CIS发展成为增量市场,国产CIS厂商也踊跃布局,给业界带来许多惊喜。思特威(上海)电子科技股份有限公司(SmartSens)正是国产CIS中亮眼的一家厂商。数据显示,2020年思特威安防监控市场的CIS芯片出货量为1.46亿颗,继续位居全球出货量TOP1的位置;同年,思特威的新兴领…

Servlet第二篇【Servlet调用图、Servlet细节、ServletConfig、ServletContext】

Servlet的调用图 前面我们已经学过了Servlet的生命周期了&#xff0c;我们根据Servlet的生命周期画出Servlet的调用图加深理解 Servlet的细节 一个已经注册的Servlet可以被多次映射 同一个Servlet可以被映射到多个URL上。 <servlet><servlet-name>Demo1</servle…