278. 第一个错误的版本

news/2024/10/11 17:31:07/

你是产品经理,目前正在带领一个团队开发新的产品。不幸的是,你的产品的最新版本没有通过质量检测。由于每个版本都是基于之前的版本开发的,所以错误的版本之后的所有版本都是错的。

假设你有 n 个版本 [1, 2, ..., n],你想找出导致之后所有版本出错的第一个错误的版本。

你可以通过调用 bool isBadVersion(version) 接口来判断版本号 version 是否在单元测试中出错。实现一个函数来查找第一个错误的版本。你应该尽量减少对调用 API 的次数。

 
示例 1:

输入:n = 5, bad = 4
输出:4
解释:
调用 isBadVersion(3) -> false
调用 isBadVersion(5) -> true
调用 isBadVersion(4) -> true
所以,4 是第一个错误的版本。
示例 2:

输入:n = 1, bad = 1
输出:1
 

提示:

1 <= bad <= n <= 231 - 1

来源:力扣(LeetCode)
链接:https://leetcode.cn/problems/first-bad-version
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

思路:

二分查找,返回true在mid或mid左侧,返回false,在mid右侧

注意当前位置mid也可能是答案出现的位置。

代码如下:

/* 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 l = 0, h = n;while (l < h) {int mid = l + (h - l) / 2;if (isBadVersion(mid)) {h = mid;} else {l = mid + 1;}}return l;}
}


http://www.ppmy.cn/news/46874.html

相关文章

系统规划与管理师相关英语

1、system planning and management engineer 系统规划与管理师 2、information technology 信息技术 3、computer science and communication technology 计算机科学和通信技术 4、design、develop、install、implement information system and application softw…

javaagent 使用注意

前言 最近做项目&#xff0c;需要实现一个agent&#xff0c;实现运行过程替换字节码&#xff0c;当笔者实现这些功能时发现还是很多注意事项的。而且字节码的替换过程如果类的属性与方法升级了&#xff0c;那么加载就会报错。这种做法的好处是代码无侵入&#xff0c;缺点也很明…

在一个maven项目中使用maven命令进行junit单元测试

如何在一个maven项目中使用maven命令进行junit单元测试? 首先确定一个maven项目的结构: 包含源代码目录src/main/java.配置目录src/main/resources.测试代码目录src/test. 目录结构可视化如下: src/- main/- java/com/example/samplejunit- demo.java- resources/com/exam…

Ansys Speos | 实现车内氛围灯早期仿真验证

在本例中&#xff0c;将演示如何使用Speos进行RGB(红、绿、蓝)车内环境照明的早期研究&#xff0c;目的是在设计光导之前评估指定位置的照明效果。 使用到的产品Ansys Speos 2022 R2或更高版本&#xff0c;license为Enterprise版本能激活人眼视觉效果。 概览 在汽车行业&#…

C++11新特性有效总结

目录 语言可用性加强 (读现代C教程有感) nullptr constexpr if/switch 申明强化 &#xff08;C17开始&#xff09; 初始化参数列表 范围for迭代 两种类型推导方式 变长参数模板 SmartPointer Lambda 多线程 (并发与并行) 并发与并行的概念 C11中的并发并行 软件…

stm32cubemx IAP升级(三)

stm32cubemx IAP升级- UARTDMA实现不定长收发数据 板卡&#xff1a;Nucleo-L412 平台&#xff1a;macbook pro 工具&#xff1a;vscode stm32cubemx stm32cubeProgramer cmake toolchain Stm32CubeMx的配置 选择开启一路串口并配置成DMA&#xff0c;并使能中断&#xff0c;配…

第三十章 配置镜像 - 激活和更新镜像数据库

文章目录 第三十章 配置镜像 - 激活和更新镜像数据库激活和更新镜像数据库编辑或删除镜像成员清除报告异步镜像成员上的 FailoverDB 标志 第三十章 配置镜像 - 激活和更新镜像数据库 激活和更新镜像数据库 可以使用镜像监视器在备份故障转移成员和异步成员上激活和/或赶上镜像…

QPSK调制解调FPGA实现成果展示:

目录 QPSK调制解调使用参数&#xff1a; 调制&#xff1a; 解调&#xff1a; FPGA工程架构&#xff1a; 仿真参数&#xff1a; 仿真展示&#xff1a; 调制&#xff1a; 解调&#xff1a; MATLAB星座图展示&#xff1a; QPSK调制解调使用参数&#xff1a; 采样率为4M&…