旋转数组的最小数字

题目描述

  把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。
  输入一个非递减排序的数组的一个旋转,输出旋转数组的最小元素。例如数组{3,4,5,1,2}为{1,2,3,4,5}的一个旋转,该数组的最小值为1。
  NOTE:给出的所有元素都大于0,若数组大小为0,请返回0。


实现代码

function minNumberInRotateArray(rotateArray)
{var len = rotateArray.lengthif (len == 0){return 0}else{ var low = 0;var high = len-1;while(low<high){var mid = low + Math.floor((high - low) / 2);        if(rotateArray[mid] > rotateArray[high]){low = mid + 1;}else if(rotateArray[mid] == rotateArray[high]){high = high - 1;}else{high = mid;}   }return rotateArray[low];}}

思路

  旋转之后的数组实际上可以划分成两个有序的子数组:前面子数组的大小都大于后面子数组中的元素,实际上最小的元素就是两个子数组的分界线。

  1. 我们用两个指针low和high分别指向数组的第一个元素和最后一个元素。按照题目的旋转的规则,第一个元素应该是大于等于最后一个元素的;但是如果不是旋转,第一个元素肯定小于或等于最后一个元素。

  2. 找到数组的中间元素。中间元素大于最后一个元素,则中间元素位于前面的递增子数组,此时最小元素位于中间元素的后面。我们可以让第一个指针low指向中间元素。

  3. 中间元素小于最后一个元素,则中间元素位于后面的递增子数组,此时最小元素位于中间元素的前面。我们可以让第二个指针high指向中间元素。

  4. 中间元素等于最后一个元素,则将第二个指针向前移,然后继续比较。

转载于:https://www.cnblogs.com/echovic/p/6430643.html

《剑指offer》— JavaScript(6)旋转数组的最小数字相关推荐

  1. 剑指offer java -查找旋转数组的最小数字

    /** * Created by wqc on 2017/7/18. * 查找旋转数组的最小数字 * 把一个数组最开始的若干个元素搬到数组的末尾,称为数组的旋转 * 输入一个递增排序的数组的一个旋转, ...

  2. 【剑指 Offe】11. 旋转数组的最小数字

    题目:剑指 Offer 11. 旋转数组的最小数字 把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转. 给你一个可能存在 重复 元素值的数组 numbers ,它原来是一个升序排列的数 ...

  3. 剑指 Offer 笔记: T45. 把数组排成最小的数

    T45. 把数组排成最小的数 输入一个非负整数数组,把数组里所有数字拼接起来排成一个数,打印能拼接出的所有数字中最小的一个. 示例 1: 输入: [10,2] 输出: "102" ...

  4. 《LeetCode力扣练习》剑指 Offer 11. 旋转数组的最小数字 Java

    <LeetCode力扣练习>剑指 Offer 11. 旋转数组的最小数字 Java 一.资源 题目: 把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转. 给你一个可能存在 ...

  5. 剑指 Offer 11. 旋转数组的最小数字 简单

    剑指 Offer 11. 旋转数组的最小数字 题目 解题思路 方法(一)直接遍历法 方法(二)二分查找法 题目 把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转.输入一个递增排序的数组 ...

  6. 剑指offer 11. 旋转数组的最小数字(很详细!)

    剑指offer 11. 旋转数组的最小数字 题目 解题思路 代码 题目 解题思路 一开始,我们就能直接想到,数组找最小值,那么不轻轻松松直接遍历一遍,用一个变量记录最小值,然后直接返回不就完事了? 但 ...

  7. 剑指Offer #06 旋转数组的最小数字(二分查找)| 图文详解

    题目来源:牛客网-剑指Offer专题 题目地址:旋转数组的最小数字 题目描述 把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转. 输入一个非递减排序的数组的一个旋转,输出旋转数组的最小 ...

  8. 【LeetCode】剑指 Offer 11. 旋转数组的最小数字

    [LeetCode]剑指 Offer 11. 旋转数组的最小数字 文章目录 [LeetCode]剑指 Offer 11. 旋转数组的最小数字 一.遍历 二.二分法 总结 一.遍历 算法步骤: 遍历数组 ...

  9. 剑指offer——面试题8:旋转数组的最小数字

    剑指offer--面试题8:旋转数组的最小数字 Solution1: 自己想的复杂度为O(n)O(n)O(n)的算法,若用二分查找则: 1.代码复杂:2.最坏情况下的二分查找的时间复杂度亦为O(n)O ...

最新文章

  1. 运维企业专题(3)LB负载均衡介绍
  2. 做网络推广时网站结构要如何进行优化呢?
  3. 如何在C中为一个数组分配空间?
  4. LInux:shell 彩色进度条实现(有图有代码有真相!!!)
  5. 7-2 多项式求和 (10 分)
  6. 视觉SLAM十四讲学习笔记-第七讲-视觉里程计-特征点法和特征提取和匹配实践
  7. 低代码和零代码火了,十大利器推荐!
  8. 开课吧-Java常见面试题:重载和重写的区别?
  9. java除了框架还需要什么_除了框架,前端面试还问什么
  10. bat脚本保存dir结果_DOS批处理脚本及应用举例
  11. 10分钟搞定webpack打包
  12. Java——包装器类
  13. ERP库存管理 华夏
  14. pythoncqt_python基础篇
  15. [内核内存] [arm64] 内存初始化4---bootm_init
  16. 协同办公软件竞品分析
  17. 大学生计算机基础实验文库,大学计算机基础实验指导书(ecxel)
  18. 计算机符号链接是什么意思,Windows或Linux上的符号链接(符号链接)完整指南
  19. 《奈何BOSS要娶我》将播 制片人:做了很多反套路的改编
  20. ssm电商背景下精品茶网站的设计与实现毕业设计-附源码191732

热门文章

  1. Python-GUI PyQT5编程:QTdesigner设计工具及UI转换py文件
  2. docker数据卷volume详解
  3. 计算机组成原理:I/O的三大特性
  4. 【软考-软件设计师】计算机指令系统
  5. IDEA手动添加jar包
  6. centos7自带python版本_CentOS7保留默认Python版本并安装更新Python2和Python3共存
  7. git 如何取消add操作
  8. Echarts地图初体验
  9. 手机蓝牙如何减少延时_如何使用车载蓝牙播放手机音乐的方法
  10. ubuntu / 18.04 系统上配置 DHCP Server