原题地址(简单)
方法1—二分
思路
这题可以线性,但会超时,所以要用二分,
本题和744. 寻找比目标字母大的最小字母几乎是一模一样的题,
直接套第二个模板就好了。
代码
class Solution:
def firstBadVersion(self, n):
"""
:type n: int
:rtype: int
"""
low, high = 1, n
while low < high:
mid = low + (high - low) // 2
if isBadVersion(mid):
high = mid
else:
low = mid + 1
return low
时空复杂度
时间复杂度 O(logN)
,空间复杂度 O(1)