剑指Offer_11_旋转数组的最小数字

简介: 题目描述   把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。输入一个递增排序的数组的一个旋转,输出一个旋转数组的最小元素。   例如: {3,4,5,1,2} 为 {1,2,3,4,5} 对应的一个旋转数组,该数组的最小元素为 1 。

题目描述

  把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。输入一个递增排序的数组的一个旋转,输出一个旋转数组的最小元素。

  例如: {3,4,5,1,2} 为 {1,2,3,4,5} 对应的一个旋转数组,该数组的最小元素为 1 。 

 

  分析:

  方法一:

    因为数组的原数组是一个递增数组,所以从头遍历数组,出现 a[i] 小于 a[i-1] 则说明找到了最小元素,为 a[i]。  

1 int FindMinNumber(int arr[],int length){   // arr为旋转数组,length为数组长度
2     for(int i=1;i<length;i++){
3         if(arr[i]<arr[i-1])
4             return arr[i] ;  // 找到了最小元素
5     }
6     return -1 ;  // 未找到,返回 -1 
7 }

    方法二:

             采用二分查找,两个指针分别指向旋转数组的首元素(p1)和尾元素(p2) ,比较两指针中间元素(midNum)与两端元素的大小。

     如果 p1 大于 midNum 则说明 p1到midNum之间的元素没有移动过,最小元素在另一半,p1指向midNum 。

     如果 p1 小于 midNum 则说明 p1到midNum之间的元素发生了改变,最小元素在其中, p2指向midNum 。

     p2同理。

     直至最后p1等于p2,则找到最小元素。 

 1 int FindMinNumber2(int arr[],int length){
 2     int p1 = 0 ;
 3     int p2 = length-1 ;
 4     int mid = (p1+p2)/2 ;
 5     while(p1!=p2){
 6         if(arr[p1]>arr[mid])
 7         {
 8             p2 = mid  ;
 9         }
10         if(arr[p2]<arr[mid]){
11             p1 = mid ;
12         }
13     }
14     return arr[p1] ;
15 }

 

    

 

 

目录
相关文章
|
监控 数据挖掘 测试技术
【写作能力提升】手把手教你快速搞定4个职场写作场景
【写作能力提升】手把手教你快速搞定4个职场写作场景
420 0
【写作能力提升】手把手教你快速搞定4个职场写作场景
|
消息中间件 缓存 监控
使用 redis 的好处?
使用 redis 的好处?
101 0
Npm - 基础篇
Npm - 基础篇
128 0
Npm - 基础篇
|
Java API 数据格式
Gradle 1.12 翻译——第十六章. 使用文件
有关其他已翻译的章节请关注Github上的项目:https://github.com/msdx/gradledoc/tree/1.12,或访问:http://gradledoc.qiniudn.com/1.12/userguide/userguide.html 本文原创,转载请注明出处:http://blog.csdn.net/maosidiaoxian/article/details/41113353 关于我对Gradle的翻译,以Github上的项目及http://gradledoc.qiniudn.com 上的文档为准。
984 0
|
Windows 编解码
Windows Phone 8开发知识笔记
1、Windows Phone 8目前支持3种屏幕分辨率,分别是 WVGA  800X480 (15:9) WXGA  1280X768 (15:9) 720p    1280X720 (16:9) 2、在Windows Phone 8中,当BackgroundAudioPlayer的状态更改时,可以从PlayStateChangedEventArgs中捕获有关状态改变的信息。
814 0
|
4天前
|
人工智能 运维 安全
|
2天前
|
人工智能 异构计算
敬请锁定《C位面对面》,洞察通用计算如何在AI时代持续赋能企业创新,助力业务发展!
敬请锁定《C位面对面》,洞察通用计算如何在AI时代持续赋能企业创新,助力业务发展!
|
9天前
|
人工智能 JavaScript 测试技术
Qwen3-Coder入门教程|10分钟搞定安装配置
Qwen3-Coder 挑战赛简介:无论你是编程小白还是办公达人,都能通过本教程快速上手 Qwen-Code CLI,利用 AI 轻松实现代码编写、文档处理等任务。内容涵盖 API 配置、CLI 安装及多种实用案例,助你提升效率,体验智能编码的乐趣。
816 109