0278. First Bad Version
Easy | Binary Search | 24 ms (94.52%), 14.2 MB (73.95%)
Input: n = 5, bad = 4
Output: 4
Explanation:
call isBadVersion(3) -> false
call isBadVersion(5) -> true
call isBadVersion(4) -> true
Then 4 is the first bad version.
Input: n = 1, bad = 1
Output: 1# The isBadVersion API is already defined for you.
# @param version, an integer
# @return an integer
# def isBadVersion(version):
class Solution:
def firstBadVersion(self, n):
# (base case)
if n == 1: return 1
if n == 2: return 1 if isBadVersion(1) else 2
# ==================================================
# Binary Search =
# ==================================================
# time : O(log(n))
# space : O(1)
l, r = 1, n
while l < r:
mid = (l + r) // 2
if isBadVersion(mid): r = mid
else: l = mid + 1
return lLast updated