返回轨道
算法 · 2026-05-14 · 19 阅读

P227 第一个出错的版本

算法 19 阅读

信号摘要

难度:Easy · 时长:05:58 · leetcode 278 · lintcode 74

P227 第一个出错的版本

未对外公开播放权限
点击查看说明

描述

这个题目说的是,给你一个整数 n,1 ~ n 表示一个产品的 n 个版本。其中,从某个版本开始,产品发生了错误。导致从那个版本开始,后面所有版本的产品都有问题。

现在给你一个函数 isBadVersion,输入一个版本号,它会告诉你这个版本的产品是否有问题。你要利用这个函数,找到第一个出错的版本。

比如说,给你的 n 等于 6,也就是说你要在 1 ~ 6 这 6 个版本中,找到第一个出错的版本。

假设第一个出错的版本为 4,那么调用 isBadVersion 会得到:

isBadVersion(1) => false isBadVersion(2) => false isBadVersion(3) => false isBadVersion(4) => true isBadVersion(5) => true isBadVersion(6) => true

因此,对于这个例子,你要返回的第一个出错版本就是版本 4。

代码

public class AlgoCasts {

  // Time: O(log(n)), Space: O(1)
  public int firstBadVersion(int n) {
    int low = 1, high = n;
    while (low < high) {
      int mid = low + (high - low) / 2;
      if (isBadVersion(mid)) high = mid;
      else low = mid + 1;
    }
    return low;
  }

}

📡 通讯频道