python实现leetcode之154. 寻找旋转排序数组中的

2021-10-20  本文已影响0人  深圳都这么冷

解题思路

思路与上一题相同
唯一例外就是选取的中点可能与两个端点都相等,这时两边都要见检查

154. 寻找旋转排序数组中的最小值 II

代码

class Solution:
    def findMin(self, nums: List[int]) -> int:
        return findmin(nums, 0, len(nums)-1)


def findmin(arr, low, high):
    if low == high: return arr[low]
    if arr[low] < arr[high]: return arr[low]
    mid = (low + high) // 2
    if arr[low] < arr[mid]:
        return findmin(arr, mid+1, high)
    if arr[low] > arr[mid]:
        return findmin(arr, low, mid)
    if arr[mid] < arr[high]:
        return findmin(arr, low, mid)
    if arr[mid] > arr[high]:
        return findmin(arr, mid+1, high)
    # arr[low] == arr[mid] == arr[high]
    return min(findmin(arr, low, mid), findmin(arr, mid+1, high))
效果图
上一篇 下一篇

猜你喜欢

热点阅读