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

    LeetCode 278 第一个错误的版本

    问题描述:
      你是产品经理,目前正在带领一个团队开发新的产品。不幸的是,你的产品的最新版本没有通过质量检测。由于每个版本都是基于之前的版本开发的,所以错误的版本之后的所有版本都是错的。
      假设你有 n 个版本 [1, 2, ..., n],你想找出导致之后所有版本出错的第一个错误的版本。
      你可以通过调用 bool isBadVersion(version) 接口来判断版本号 version 是否在单元测试中出错。实现一个函数来查找第一个错误的版本。你应该尽量减少对调用 API 的次数。

    执行用时:21 ms, 在所有 Java 提交中击败了20.60%的用户
    内存消耗:35.4 MB, 在所有 Java 提交中击败了69.81%的用户

    二分: 找到第一次出现true的位置

    public class Solution extends VersionControl {
        public int firstBadVersion(int n) {
            if(n==1) {
                return 1;
            }
            //类比: 寻找目标值在排序数组中第一次出现位置
            int left = 1, right = n;
            int mid = left + (right-left)/2;
            while(left<right) {
                if(isBadVersion(mid)) {
                    if(mid>0 && isBadVersion(mid-1)) {
                        right = mid-1;
                    }
                    else {
                        return mid;
                    }
                }
                else {
                    left = mid+1;
                }
                mid = left + (right-left)/2;
            }
            return mid;
        }
    }
    
  • 相关阅读:
    学习进度条第十周
    学习进度条第九周
    结巴分词python
    竞品分析
    学期总结(一)------文献挖掘
    分类结果评估
    scrapy 爬虫怎么写入日志和保存信息
    Python 安装 imread报错
    Python爬虫爬中文却显示Unicode,怎样显示中文--问题解答
    Python网络数据采集二
  • 原文地址:https://www.cnblogs.com/CodeSPA/p/13684927.html
Copyright © 2011-2022 走看看