劍指 offer_第六題_旋轉陣列的最小數字
阿新 • • 發佈:2018-11-15
平臺
牛客網
語言
python2.7.3
作業內容
題目描述
把一個數組最開始的若干個元素搬到陣列的末尾,我們稱之為陣列的旋轉。 輸入一個非減排序的陣列的一個旋轉,輸出旋轉陣列的最小元素。 如陣列 {3,4,5,1,2} 為 {1,2,3,4,5} 的一個旋轉,該陣列的最小值為 1。 NOTE:給出的所有元素都大於 0,若陣列大小為 0,請返回 0。
題目理解
非遞減排序: 就是從小到大或者允許中間有相等的情形
解題思路
找出陣列的最小元素 在所給陣列從最小值前切分 調換位置
程式 (還需理解)
# -*- coding:utf-8 -*- class Solution: def minNumberInRotateArray(self, rotateArray): # write code here if rotateArray == []: return 0 _len = len(rotateArray) left = 0 right = _len - 1 while left <= right: mid = int((left + right) >> 1) if rotateArray[mid]<rotateArray[mid-1]: return rotateArray[mid] if rotateArray[mid] >= rotateArray[right]: # 說明在【mid,right】之間 left = mid + 1 else: # 說明在【left,mid】之間 right = mid - 1 return rotateArray[mid]