python 山脉数组的峰顶索引
生活随笔
收集整理的這篇文章主要介紹了
python 山脉数组的峰顶索引
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
| 山脈數組的峰頂索引
符合下列屬性的數組 arr 稱為 山脈數組 : arr.length >= 3 存在 i(0 < i < arr.length - 1)使得: arr[0] < arr[1] < ... arr[i-1] < arr[i] arr[i] > arr[i+1] > ... > arr[arr.length - 1] 給你由整數組成的山脈數組 arr ,返回任何滿足 arr[0] < arr[1] < ... arr[i - 1] < arr[i] > arr[i + 1] > ... > arr[arr.length - 1] 的下標 i 。示例 1:輸入:arr = [0,1,0] 輸出:1 示例 2:輸入:arr = [0,2,1,0] 輸出:1 示例 3:輸入:arr = [0,10,5,2] 輸出:1 示例 4:輸入:arr = [3,4,5,1] 輸出:2 示例 5:輸入:arr = [24,69,100,99,79,78,67,36,26,19] 輸出:2提示:3 <= arr.length <= 104 0 <= arr[i] <= 106 題目數據保證 arr 是一個山脈數組進階:很容易想到時間復雜度 O(n) 的解決方案,你可以設計一個 O(log(n)) 的解決方案嗎?題解
class Solution:def peakIndexInMountainArray(self, arr: List[int]) -> int:length = len(arr)first = 0last = length - 1while last >= first:mid = first + (last-first)//2if mid == 0:return last# 前后探測法if arr[mid] > arr[mid-1] and arr[mid] > arr[mid+1]:return midelif arr[mid] > arr[mid-1] and arr[mid] < arr[mid+1]:first = mid + 1elif arr[mid] > arr[mid+1] and arr[mid] < arr[mid-1]:last = mid - 1總結
以上是生活随笔為你收集整理的python 山脉数组的峰顶索引的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: python 寻找旋转排序数组中的最小值
- 下一篇: python 计算算术平方根