• 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;
        }
    }
    
  • 相关阅读:
    day7随笔
    day6随笔
    day5笔记
    uniapp 全屏蒙版下的其他view禁止滑动
    uniapp scroll-view 组件右侧的滚动条
    uni 组件 头部
    根据两点的经纬度查询两点间的距离
    仅供学习使用的一些 相关vue类
    仅供学习使用的一些样式+行为
    百度地图简单调用
  • 原文地址:https://www.cnblogs.com/CodeSPA/p/13684927.html
Copyright © 2020-2023  润新知