0153: Find Minimum in Rotated Sorted Array
import bisect
class Solution:
def findMin(self, nums):
def bsearch(arr, lx, rx, target):
if lx <= rx:
mx = lx + (rx - lx) // 2
if int(arr[mx] < nums[0]) < target:
return bsearch(arr, mx + 1, rx, target)
else:
temp = bsearch(arr, lx, mx - 1, target)
if temp == -1:
return mx
return temp
return -1
ix = bsearch(nums, 0, len(nums) - 1, 0.5)
if ix == -1:
return nums[0]
return nums[ix % len(nums)]