LeetCode278:First Bad Version(二分法)
阿新 • • 發佈:2018-12-21
You are a product manager and currently leading a team to develop a new product. Unfortunately, the latest version of your product fails the quality check. Since each version is developed based on the previous version, all the versions after a bad version are also bad.
Suppose you have n
versions [1, 2, ..., n]
You are given an API bool isBadVersion(version)
which will return whether version
is bad. Implement a function to find the first bad version. You should minimize the number of calls to the API.
Example:
Given n = 5, and version = 4 is the first bad version.call isBadVersion(3) -> false call isBadVersion(5) -> true call isBadVersion(4) -> true Then 4 is the first bad version.
LeetCode:連結
可以用暴力搜尋,但是因為他要求少用判斷的次數,所以對於有序陣列來說二分法是最好的選擇。
# 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 """ low = 1 high = n while low <= high: mid = (low+high) // 2 if isBadVersion(mid) == True: high = mid - 1 else: low = mid + 1 return low