153. 寻找旋转排序数组中的最小值
1.题目
2.我的解决方案
class Solution:
def findMin(self, nums: List[int]) -> int:
mi = temp = math.inf
left = 0
right = len(nums) - 1
while left <= right:
mid = (left + right) // 2
if nums[left] <= nums[mid] :
temp = nums[left]
left = mid + 1
else:
temp = nums[mid]
right = mid
mi = min(mi, temp)
return mi
- 时间复杂度:
O
(
l
o
g
n
)
O(logn)
O(logn)
- 空间复杂度:
O
(
1
)
O(1)
O(1)
3. 官方的解决方案
class Solution:
def findMin(self, nums: List[int]) -> int:
left, right = 0, len(nums) - 1
while left < right:
mid = (left+right) //2
if nums[mid] < nums[right]:
right = mid
else:
left = mid + 1
return nums[left]
- 时间复杂度:
O
(
l
o
g
n
)
O(logn)
O(logn)
- 空间复杂度:
O
(
1
)
O(1)
O(1)