当前位置: 代码迷 >> 综合 >> Leetcode 之 First Bad Version (第一个错误的版本)
  详细解决方案

Leetcode 之 First Bad Version (第一个错误的版本)

热度:60   发布时间:2023-09-19 08:31:19.0

题目描述:给定一个元素 n 代表有 [1, 2, ..., n] 版本,在第 x 位置开始出现错误版本,导致后面的版本都错误。可以调用 isBadVersion(int x) 知道某个版本是否错误,要求找到第一个错误的版本。

解题思路:本题采用二分法来实现,二分法中低位为l,高位为h。中间数的取法有两种:

                                    1、m = (l + h)/2

                                    2、m = l + (h - l)/2

       如果第 m 个版本出错,则表示第一个错误的版本在 [l, m] 之间,令 h = m;否则第一个错误的版本在 [m + 1, h] 之间,令 l = m + 1。因为 h 的赋值表达式为 h = m,因此循环条件为 l < h

代码实现:

public int firstBadVersion(int n) {int l = 1, h = n;while (l < h) {int mid = l + (h - l) / 2;if (isBadVersion(mid)) {h = mid;} else {l = mid + 1;}}return l;
}

 

  相关解决方案