找最小数字?用min()不就好了...
不过,这种方法会遍历整个数组,时间复杂度为O(n),相反,用二分法的时间复杂度为O(log2N)
思路:排序数组的查找问题首先考虑使用 二分法 解决,其可将 遍历法 的 线性级别 时间复杂度降低至 对数级别 。
class Solution:
def minArray(self, numbers: [int]) -> int:
i, j = 0, len(numbers) - 1
while i < j:
m = (i + j) // 2
if numbers[m] > numbers[j]:
i = m + 1
elif numbers[m] < numbers[j]:
j = m
else:
j -= 1
return numbers[i]