Leetcode 278. First Bad Version
2015-09-30 13:23
281 查看
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
You are given an API
注意: mid 没有直接写成 (left + right) / 2, 是因为可能会有溢出。写成left + (right - left) / 2, 虽然从数学公式上来看一样,但实际计算时有差异,不会有溢出。
也要注意是让你找第一个还是最后一个bad version
Java code:
1.
2. 九章算法模板写法(2016.1.14)
Reference:
1. http://www.cnblogs.com/yuzhangcmu/p/4161837.html
2. http://bookshadow.com/weblog/2015/09/07/leetcode-first-bad-version/
3. http://www.jiuzhang.com/solutions/first-bad-version/
Suppose you have
nversions
[1, 2, ..., n]and you want to find out the first bad one, which causes all the following ones to be bad.
You are given an API
bool isBadVersion(version)which will return whether
versionis bad. Implement a function to find the first bad version. You should minimize the number of calls to the API.
解题思路:
使用binary search, 即半分法。 保证算法复杂度为O(logn)。注意: mid 没有直接写成 (left + right) / 2, 是因为可能会有溢出。写成left + (right - left) / 2, 虽然从数学公式上来看一样,但实际计算时有差异,不会有溢出。
也要注意是让你找第一个还是最后一个bad version
Java code:
1.
/* The isBadVersion API is defined in the parent class VersionControl. boolean isBadVersion(int version); */ public class Solution extends VersionControl { public int firstBadVersion(int n) { int left = 1, right = n; while(left <= right){ int mid = left + (right - left) / 2; if(isBadVersion(mid)) { right = mid - 1; }else { left = mid + 1; } } return left; } }
2. 九章算法模板写法(2016.1.14)
/* The isBadVersion API is defined in the parent class VersionControl. boolean isBadVersion(int version); */ public class Solution extends VersionControl { public int firstBadVersion(int n) { int start = 0; int end = n; int mid; while(start + 1 < end) { mid = start + (end - start) / 2; if(isBadVersion(mid)){ end = mid; } else { start = mid; } } if(isBadVersion(start)){ return start; } return end; } }
Reference:
1. http://www.cnblogs.com/yuzhangcmu/p/4161837.html
2. http://bookshadow.com/weblog/2015/09/07/leetcode-first-bad-version/
3. http://www.jiuzhang.com/solutions/first-bad-version/
相关文章推荐
- HTML标准中已经废弃的<marquee>标签
- mouseover与mouseenter与mousemove差额mouseout与mouseleave差额
- HDU1796(容斥)
- 键盘的相关处理
- 12. 查询数据库账号的所有权限
- 简单大根堆的实现
- addSubview和insertSubview 区别(ios自学笔记)
- 软考教程复习上
- DP HDOJ 5492 Find a path
- Translate Animation变换
- BFS:Meteor Shower(POJ 3669)
- 父子窗口传递数据
- Median of Two Sorted Arrays
- python实现树莓派生成并识别二维码
- jQuery的UI库的下载
- LeetCode全题解
- sgu209:Areas(计算几何)
- jquery插件pagination实现无刷新ajax分页
- 关于陌陌签名验证机制的研究
- PowerShell 变量(Variable)