zoukankan      html  css  js  c++  java
  • Leetcode 278 第一个错误的版本 二分

    地址 https://leetcode-cn.com/problems/first-bad-version/

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

    解答
    二分模板

    每次尝试版本区间的中间索引, 得到是否为错误版本,逐步缩小区间,得到正确答案。

    // The API isBadVersion is defined for you.
    // bool isBadVersion(int version);
    
    class Solution {
    public:
        int firstBadVersion(int n) {
            int l = 1; int r = n;
            while(l<r){
                int mid = ((long long )l+r) >> 1;
                if(isBadVersion(mid)) r = mid;
                else l = mid+1;
            }      
    
            return l;
        }
    };
    
    

    我的视频题解空间

    作 者: itdef
    欢迎转帖 请保持文本完整并注明出处
    技术博客 http://www.cnblogs.com/itdef/
    B站算法视频题解
    https://space.bilibili.com/18508846
    qq 151435887
    gitee https://gitee.com/def/
    欢迎c c++ 算法爱好者 windows驱动爱好者 服务器程序员沟通交流
    如果觉得不错,欢迎点赞,你的鼓励就是我的动力
    阿里打赏 微信打赏
  • 相关阅读:
    Comparable VS Comparator
    Javascript中this关键字详解
    Runtime、System、Object
    JS IDE
    异常处理
    Throwable vs Exception
    8.4 Java 命名规范
    关键字、标识符、注释、变量
    Docker —— 从入门到实践
    RTC教程
  • 原文地址:https://www.cnblogs.com/itdef/p/15335447.html
Copyright © 2011-2022 走看看