1. 程式人生 > >劍指 offer_第六題_旋轉陣列的最小數字

劍指 offer_第六題_旋轉陣列的最小數字

平臺

牛客網

語言

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]

補充知識點