原题链接:278. First Bad Version
【思路-Pathon】
【思路-Java】
本题是二分法的应用,要注意①处的细节,如果直接 int mid = (right + left) / 2可能会产生溢出:
public class Solution extends VersionControl {
public int firstBadVersion(int n) {
int left = 0, right = n;
while (left < right) {
int mid = left + (right - left) / 2; //①
if (isBadVersion(mid)) right = mid;
else left = mid + 1;
}
return left;
}
}
21 / 21
test cases passed. Runtime: 18 ms Your runtime beats 51.67% of javasubmissions.
【思路-Pathon】
也是用二分法,不过不会出现溢出问题:
class Solution(object):
def firstBadVersion(self, n):
"""
:type n: int
:rtype: int
"""
l = 1
r = n
while l < r :
m = (r + l) / 2
if isBadVersion(m) :
r = m
else :
l = m + 1
return l
21 / 21
test cases passed. Runtime: 44 ms Your runtime beats 22.28% of pythonsubmissions.