LeetCode:First Bad Version
2016-07-09 22:32
260 查看
First Bad Version
Total Accepted: 50887Total Submissions:222393
Difficulty: Easy
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
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.
Credits:
Special thanks to @jianchao.li.fighter for adding this problem and creating all test cases.
Subscribe to see which companies asked this question
Hide Tags
Binary Search
Hide Similar Problems
(M) Search for a Range (M)
Search Insert Position
思路:
二分查找。但是直接用mid = (lo + hi) / 2,可能会溢出。
因此等式替换为:mid = lo + (hi - lo) / 2,可防止溢出。
java code:
/* 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 lo = 1, hi = n; while(lo <= hi) { int mid = lo + ((hi - lo)>>1); // 防溢出 if(isBadVersion(mid)) hi = mid - 1; else lo = mid + 1; } return lo; } }
相关文章推荐
- 关于UITableView中Cell的保持/保存 选中状态的简单方法
- 如何把文件夹内文件名批量导出到txt生成清单
- 第二天
- 遍历Map的四种方法
- python视频教程大全集下载
- SQL学习笔记(一)
- 剑指offer面试题6:重建二叉树
- NYOJ三点顺序
- github视频录制播放相关功能-参考
- POJ 1442 Treap模板
- 点石成金-读书笔记
- php socket服务端和客户端实例
- 292. Nim Game
- Gym 100463A Crossing Number(树状数组)
- 共享onload事件
- POJ 1442 Treap模板
- GridView中BoundField类型列的改行方法
- 【Linux】阻塞信号
- Java 相关
- SSH(三)