leetcode每日不做题
461. 汉明距离
852. 山脉数组的峰顶索引
374. 猜数字大小
278. 第一个错误的版本
474. 一和零
231. 2 的幂
342. 4的幂
1074. 元素和为目标值的子矩阵数量
477. 汉明距离总和
12. 整数转罗马数字
1190. 反转每对括号间的子串
692. 前K个高频单词
1738. 找出第 K 大的异或坐标值
1442. 形成两个异或相等数组的三元组数目
993. 二叉树的堂兄弟节点
421. 数组中两个数的最大异或值
13.罗马数字转整数
本文档使用 MrDoc 发布
-
+
首页
278. 第一个错误的版本
[力扣原题链接](https://leetcode-cn.com/problems/first-bad-version/) ## 题目 你是产品经理,目前正在带领一个团队开发新的产品。不幸的是,你的产品的最新版本没有通过质量检测。由于每个版本都是基于之前的版本开发的,所以错误的版本之后的所有版本都是错的。 假设你有`n`个版本`[1, 2, ..., n]`,你想找出导致之后所有版本出错的第一个错误的版本。 你可以通过调用`bool isBadVersion(version)`接口来判断版本号`version`是否在单元测试中出错。实现一个函数来查找第一个错误的版本。你应该尽量减少对调用`API`的次数。 **示例 1:** ``` 给定 n = 5,并且 version = 4 是第一个错误的版本。 调用 isBadVersion(3) -> false 调用 isBadVersion(5) -> true 调用 isBadVersion(4) -> true 所以,4 是第一个错误的版本。 ``` ## 思路 二分查找 ## 代码 语言:Java ``` /* 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 low = 1; int high = n; // 二分查找 while (low < high) { int mid = low + (high-low) / 2; // 防止int值溢出 if(isBadVersion(mid)) { // 第一个错误的版本号在中间值的左边 high = mid; } else { // 第一个错误的版本号在中间值的右边 low = mid + 1; } } return low; } } ```
renyi567
2021年6月13日 17:25
转发文档
收藏文档
上一篇
下一篇
手机扫码
复制链接
手机扫一扫转发分享
复制链接
阅读量
次
本站总访问量
次
本站访客数
人次
Markdown文件
分享
链接
类型
密码
更新密码