原題
代碼庫的版本號是從 1 到 n 的整數。某一天,有人提交了錯誤版本的代碼,因此造成自身及之后版本的代碼在單元測試中均出錯。請找出第一個錯誤的版本號。
你可以通過 isBadVersion 的接口來判斷版本號 version 是否在單元測試中出錯,具體接口詳情和調用方法請見代碼的注釋部分。
給出 n=5
調用isBadVersion(3),得到false
調用isBadVersion(5),得到true
調用isBadVersion(4),得到true
此時我們可以斷定4是第一個錯誤的版本號
解題思路
- 相當于找第一個target元素,例如找第一個1
00000001111111111111111
完整代碼
# The isBadVersion API is already defined for you.
# @param version, an integer
# @return a bool
# def isBadVersion(version):
class Solution(object):
def firstBadVersion(self, n):
"""
:type n: int
:rtype: int
"""
start, end = 0, n
while start + 1 < end:
mid = start + (end - start) / 2
if isBadVersion(mid):
end = mid
else:
start = mid
if isBadVersion(start):
return start
else:
return end