剑指offer 08 旋转数组的最小数字
来源:互联网 发布:diagbox软件下载 编辑:程序博客网 时间:2024/06/06 03:53
题目描述
把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。 输入一个非递减排序的数组的一个旋转,输出旋转数组的最小元素。 例如数组{3,4,5,1,2}为{1,2,3,4,5}的一个旋转,该数组的最小值为1。 NOTE:给出的所有元素都大于0,若数组大小为0,请返回0。
思路:
1.当midindex<leftindex时,最小数字在左边
2.当midindex>rightindex时,最小数字在右边
3.当leftindex==rightindex==midindex时,最小数字不能判断在左边还是在右边
class Solution: def minNumberInRotateArray(self, rotateArray): # write code here if len(rotateArray) == 0: return 0 leftindex = 0 rightindex = len(rotateArray) - 1 midindex = leftindex while rotateArray[leftindex] >= rotateArray[rightindex]: if rightindex - leftindex == 1: return rotateArray[rightindex] midindex = int((leftindex + rightindex) / 2) if rotateArray[rightindex] == rotateArray[leftindex] and rotateArray[rightindex] == rotateArray[midindex]: minnum = rotateArray[leftindex] for tmp in rotateArray[leftindex + 1:rightindex + 1]: if tmp < minnum: minnum = tmp return minnum elif rotateArray[midindex] >= rotateArray[leftindex]: leftindex = midindex elif rotateArray[midindex] <= rotateArray[rightindex]: rightindex = midindex return rotateArray[midindex]
阅读全文
0 0
- 【剑指offer】旋转数组的最小数字
- 剑指offer--旋转数组的最小数字
- 剑指offer--旋转数组的最小数字
- 剑指offer:旋转数组的最小数字
- 《剑指offer》旋转数组的最小数字
- 剑指 offer:旋转数组的最小数字
- 剑指offer-旋转数组的最小数字
- 剑指offer 旋转数组的最小数字
- 【剑指offer】旋转数组的最小数字
- 剑指offer 旋转数组的最小数字
- 剑指offer-旋转数组的最小数字
- 剑指Offer:旋转数组的最小数字
- 剑指Offer 旋转数组的最小数字
- 剑指offer|旋转数组的最小数字
- 剑指offer:旋转数组的最小数字
- 【剑指offer】旋转数组的最小数字
- 《剑指offer》旋转数组的最小数字
- 剑指Offer:旋转数组的最小数字
- RILD
- Discuz3.2 qq互联提示“您的站点未开启此项云服务,请开启相应插件”解救办法
- maven的下载与环境配置(详)
- 解决VS2010创建工程时弹出“创建或打开C++浏览数据库文件 发生错误”的问题"
- 解决Pycharm里远程调试缺乏DISPLAY环境变量的TkAgg报错
- 剑指offer 08 旋转数组的最小数字
- 转载CSDN博客
- 使用生产者消费者解决海量数据的处理与相关优化
- QUICKSORT OPINION
- Mockito的使用
- java泛型(一)、泛型的基本介绍和使用
- Harris角点检测实现详解
- Arduino智能小车——测试篇
- 使用GROUP BY得到 极端的记录