1234567891011121314151617181920212223242526272829303132 |
- # The isBadVersion API is already defined for you.
- # @param version, an integer
- # @return a bool
- # def isBadVersion(version):
-
- # I am assuming that the latest definitely is bad based on the way the problem is worded
- # so I will just implement a binary search pretty mcuh
-
- def isBadVersion(n):
- return n >= 4
-
- class Solution:
- def firstBadVersion(self, n):
- # This check cuts out a case quickly, and also makes the logic easier to write
- # because negatives and zeros no longer have to be dealt with
- if isBadVersion(0):
- return 0
- knownGood = 0
- knownBad = n
- while knownBad - knownGood > 1:
- # find the mid point
- # check whether it's good or bad, and update accordingly
- mid = (knownGood + knownBad) // 2
- if isBadVersion(mid):
- knownBad = mid
- else:
- knownGood = mid
- return knownBad
-
- s = Solution()
- print("Expected: 4")
- print("Got:", s.firstBadVersion(5))
|