# The isBadVersion API is already defined for you.
# @param version, an integer
# @return an integer
# def isBadVersion(version):
class Solution:
def firstBadVersion(self, n):
"""
:type n: int
:rtype: int
"""
# 二分查找的变种题
begin_version, end_version = 1, n
is_find = False
result = 1
while(not is_find):
middle = int((begin_version + end_version) / 2)
if middle == begin_version:
is_find = True
result = middle + 1
if isBadVersion(middle):
if not isBadVersion(middle - 1):
is_find = True
result = middle
else:
end_version = middle
else:
begin_version = middle
return result