劍指 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]

補充知識點

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章