Python 旋转数组的最小数字
把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。输入一个非减排序的数组的一个旋转,输出旋转数组的最小元素。例如数组{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 旋转数组的最小数字相关推荐
- 剑指offer:面试题11. 旋转数组的最小数字
题目:旋转数组的最小数字 把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转.输入一个递增排序的数组的一个旋转,输出旋转数组的最小元素.例如,数组 [3,4,5,1,2] 为 [1,2, ...
- 剑指offer_第6题_旋转数组的最小数字
题目描述 把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转. 输入一个非减排序的数组的一个旋转,输出旋转数组的最小元素. 例如数组{3,4,5,1,2}为{1,2,3,4,5}的一个旋 ...
- 《LeetCode力扣练习》剑指 Offer 11. 旋转数组的最小数字 Java
<LeetCode力扣练习>剑指 Offer 11. 旋转数组的最小数字 Java 一.资源 题目: 把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转. 给你一个可能存在 ...
- 剑指 Offer 11. 旋转数组的最小数字 简单
剑指 Offer 11. 旋转数组的最小数字 题目 解题思路 方法(一)直接遍历法 方法(二)二分查找法 题目 把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转.输入一个递增排序的数组 ...
- LeetCode-剑指 Offer 11. 旋转数组的最小数字
剑指 Offer 11. 旋转数组的最小数字 思路一:先排序,返回第一个数组值 class Solution {public:int minArray(vector<int>& n ...
- 剑指offer 11. 旋转数组的最小数字(很详细!)
剑指offer 11. 旋转数组的最小数字 题目 解题思路 代码 题目 解题思路 一开始,我们就能直接想到,数组找最小值,那么不轻轻松松直接遍历一遍,用一个变量记录最小值,然后直接返回不就完事了? 但 ...
- 剑指Offer #06 旋转数组的最小数字(二分查找)| 图文详解
题目来源:牛客网-剑指Offer专题 题目地址:旋转数组的最小数字 题目描述 把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转. 输入一个非递减排序的数组的一个旋转,输出旋转数组的最小 ...
- 算法练习day20——190411(重建二叉树、斐波那契数列、跳台阶、矩形覆盖、变态跳台阶、旋转数组的最小数字、矩阵中的路径)
1.重建二叉树 根据二叉树的前序遍历和中序遍历的结果,重建出该二叉树.假设输入的前序遍历和中序遍历的结果中都不含重复的数字. preorder = [3,9,20,15,7].inorder = [9 ...
- 《剑指offer》— JavaScript(6)旋转数组的最小数字
旋转数组的最小数字 题目描述 把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转. 输入一个非递减排序的数组的一个旋转,输出旋转数组的最小元素.例如数组{3,4,5,1,2}为{1,2, ...
最新文章
- 设置系统和管理计算机硬件的应用程序,Windows7操作系统中用于设置系统和管理计算机硬件的应用程序是()...
- 一个最简单的登录页面测试case
- FreeRTOS(四)——内存管理
- JDK 16 即将发布,迎来重大改变,新特性速览!
- linux权限746,linux文件权限学习笔一
- java中哲学家就餐死锁_哲学家就餐问题与死锁总结
- 【Java】基于Socket的C/S聊天程序
- python try else多余的设计_在python中利用try..except来代替if..else的用法
- [转]CSS3 Media Query实现响应布局
- HTTP、websocket、XMPP、COAP、MQTT和DDS协议对比
- 2016年物联网技术将从概念走向落地
- 网页中那些遇到过的导航选中状态actived selected
- AES加密报错Given final block not properly padded
- phalapi可以依赖注入么_PhalApi:[2.11] 核心思想:DI依赖注入 让资源更可控
- js(javascript)页面刷新
- (python)BMI计算
- 用递归算法,把任一给定的十进制正整数转换成八进制数输出。
- 面试篇---大四实习面试经历,总结一下自己的面试过程(函渠道、面试题、面试经验)
- 设计模式之命令模式(C++)
- 日常所需 - 收藏集 - 掘金