【力扣】278. 第一个错误的版本

简介: 【力扣】278. 第一个错误的版本

题目描述

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


假设你有 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

解题方案

  • C

二分法

// The API isBadVersion is defined for you.
// bool isBadVersion(int version);

int firstBadVersion(int n) {
    int left = 1, right = n, mid = 0;
    while(left < right)
    {
        mid = left + (right - left) / 2;
        if(isBadVersion(mid))
        {
            right = mid;
        }
        else
        {
            left = mid + 1;
        }
    }
    return left;
}


相关文章
|
5月前
|
算法 测试技术 API
【Leetcode刷题Python】278. 第一个错误的版本
本文提供了使用二分查找算法解决LeetCode "第一个错误的版本" 问题的Python实现,通过递归地缩小搜索范围来查找导致之后所有版本出错的第一个错误版本。
27 0
|
8月前
|
测试技术 API C++
leetcode-278:第一个错误的版本
leetcode-278:第一个错误的版本
37 1
|
8月前
|
Go
golang力扣leetcode 278.第一个错误的版本
golang力扣leetcode 278.第一个错误的版本
37 0
|
8月前
|
存储 算法 vr&ar
☆打卡算法☆LeetCode 165. 比较版本号 算法解析
☆打卡算法☆LeetCode 165. 比较版本号 算法解析
|
存储
leetcode 165. 比较版本号
leetcode 165. 比较版本号
53 0
|
测试技术 API
【Leetcode -278.第一个错误的版本 -283.移动零】
【Leetcode -278.第一个错误的版本 -283.移动零】
32 0
|
Python
LeetCode 278. 第一个错误的版本
你是产品经理,目前正在带领一个团队开发新的产品。不幸的是,你的产品的最新版本没有通过质量检测。由于每个版本都是基于之前的版本开发的,所以错误的版本之后的所有版本都是错的。
112 0
|
存储
LeetCode 165. 比较版本号
给你两个版本号 version1 和 version2 ,请你比较它们。
91 0
|
前端开发 算法 JavaScript
LeetCode第一个错误版本使用JavaScript解题|前端学算法
LeetCode第一个错误版本使用JavaScript解题|前端学算法
97 0
LeetCode第一个错误版本使用JavaScript解题|前端学算法
|
测试技术 API 索引
【day10】LeetCode(力扣)刷题(注释详细)[707.设计链表][278.第一个错误的版本][98. 验证二叉搜索树]
刷题(注释详细)[707.设计链表][278.第一个错误的版本][98. 验证二叉搜索树]。
149 0
【day10】LeetCode(力扣)刷题(注释详细)[707.设计链表][278.第一个错误的版本][98. 验证二叉搜索树]