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

方法一:

# -*- coding:utf-8 -*-
# 复杂度 O(n)
class Solution:def minNumberInRotateArray(self, rotateArray):minNum = 0for i in range(0, len(rotateArray)):minNum = minNum if minNum < rotateArray[i] and minNum != 0 else rotateArray[i]return minNumif __name__ == '__main__':s = Solution()print(s.minNumberInRotateArray([3, 4, 5, 6, 7, 8, 1, 2]))

运行结果为:

1

方法二:

class Solution:def minNumberInRotate(self, rotateArray):# 最小值一定比前面的要小# 二分查找数据,找左右的方法是:右边的值大于终止,就说明最小值在左边if not rotateArray:return 0left = 0right = len(rotateArray) - 1while left <= right:mid = (left + right) >> 1if rotateArray[mid] < rotateArray[mid - 1]:return rotateArray[mid]elif rotateArray[mid] < rotateArray[right]:right = mid - 1else:left = mid + 1return 0if __name__ == '__main__':s = Solution()print(s.minNumberInRotate([3, 4, 5, 6, 7, 8, 1, 2]))

运行结果为:

1

Python 旋转数组的最小数字相关推荐

  1. 剑指offer:面试题11. 旋转数组的最小数字

    题目:旋转数组的最小数字 把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转.输入一个递增排序的数组的一个旋转,输出旋转数组的最小元素.例如,数组 [3,4,5,1,2] 为 [1,2, ...

  2. 剑指offer_第6题_旋转数组的最小数字

    题目描述 把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转. 输入一个非减排序的数组的一个旋转,输出旋转数组的最小元素. 例如数组{3,4,5,1,2}为{1,2,3,4,5}的一个旋 ...

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

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

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

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

  5. LeetCode-剑指 Offer 11. 旋转数组的最小数字

    剑指 Offer 11. 旋转数组的最小数字 思路一:先排序,返回第一个数组值 class Solution {public:int minArray(vector<int>& n ...

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

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

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

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

  8. 算法练习day20——190411(重建二叉树、斐波那契数列、跳台阶、矩形覆盖、变态跳台阶、旋转数组的最小数字、矩阵中的路径)

    1.重建二叉树 根据二叉树的前序遍历和中序遍历的结果,重建出该二叉树.假设输入的前序遍历和中序遍历的结果中都不含重复的数字. preorder = [3,9,20,15,7].inorder = [9 ...

  9. 《剑指offer》— JavaScript(6)旋转数组的最小数字

    旋转数组的最小数字 题目描述 把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转. 输入一个非递减排序的数组的一个旋转,输出旋转数组的最小元素.例如数组{3,4,5,1,2}为{1,2, ...

最新文章

  1. 设置系统和管理计算机硬件的应用程序,Windows7操作系统中用于设置系统和管理计算机硬件的应用程序是()...
  2. 一个最简单的登录页面测试case
  3. FreeRTOS(四)——内存管理
  4. JDK 16 即将发布,迎来重大改变,新特性速览!
  5. linux权限746,linux文件权限学习笔一
  6. java中哲学家就餐死锁_哲学家就餐问题与死锁总结
  7. 【Java】基于Socket的C/S聊天程序
  8. python try else多余的设计_在python中利用try..except来代替if..else的用法
  9. [转]CSS3 Media Query实现响应布局
  10. HTTP、websocket、XMPP、COAP、MQTT和DDS协议对比
  11. 2016年物联网技术将从概念走向落地
  12. 网页中那些遇到过的导航选中状态actived selected
  13. AES加密报错Given final block not properly padded
  14. phalapi可以依赖注入么_PhalApi:[2.11] 核心思想:DI依赖注入 让资源更可控
  15. js(javascript)页面刷新
  16. (python)BMI计算
  17. 用递归算法,把任一给定的十进制正整数转换成八进制数输出。
  18. 面试篇---大四实习面试经历,总结一下自己的面试过程(函渠道、面试题、面试经验)
  19. 设计模式之命令模式(C++)
  20. 日常所需 - 收藏集 - 掘金

热门文章

  1. ubuntu之虚拟机网络设置
  2. C++中数组作为函数参数的注意问题
  3. 【QT】自定义无边框窗口分享
  4. 《华尔街日报》点评星巴克:力推外卖与瑞幸咖啡竞争
  5. 学习新语言的练手项目
  6. 第一步:AS5600获取角度
  7. 步进电机正反转驱动、AS5600编码器信息读取及速度检测
  8. CV 领域的最美情话
  9. ReLU函数代码实现
  10. 关于python类、下列说法错误的是_关于Python变量使用,下列说法中错误的是