题目:
思路+代码:
class Solution:
def minArray(self, numbers: List[int]) -> int:
# # 时间复杂度:O(n); 空间复杂度:O(1), 遍历数组
if not numbers:
return
min_num = numbers[0]
for i in range(len(numbers)):
print(i)
if numbers[i] < min_num:
min_num = numbers[i]
return min_num
# 二分查找,时间复杂度O(logn),空间复杂度O(1)
if not numbers:
return
i, j = 0, len(numbers)-1
while i < j:
m = (i + j)//2
if numbers[m] > numbers[j]: # 只能和j,因为可能存在旋转数组,如果i,m都在一个递增序列上无法判断旋转数组的大小,所以不能和i比较,
i = m + 1
elif numbers[m] < numbers[j]:
j = m
else:
j -= 1 # 如果m处值==j处的值,那么无法判断最小值位置,所以保守操作,先j-=1
return numbers[i]