LeetCode278——第一个错误的版本

我的LeetCode代码仓:https://github.com/617076674/LeetCode

原题链接:https://leetcode-cn.com/problems/first-bad-version/

题目描述:

LeetCode278——第一个错误的版本

知识点:二分查找法

思路一:顺序查找

时间复杂度是O(n)。空间复杂度是O(1)。

JAVA代码:

public class Solution extends VersionControl {
    public int firstBadVersion(int n) {
        for (int i = 1; i <= n; i++) {
            if (isBadVersion(i)) {
                return i;
            }
        }
        return -1;
    }
}

LeetCode解题报告:

LeetCode278——第一个错误的版本

思路二:二分查找法

时间复杂度是O(logn)。空间复杂度是O(1)。

JAVA代码:

class Solution extends VersionControl {
    public int firstBadVersion(int n) {
        int left = 1, right = n;
        while (left <= right) {
            int mid = left + (right - left) / 2;
            if (isBadVersion(mid)) {
                right = mid - 1;
            } else {
                left = mid + 1;
            }
        }
        return left;
    }
}

LeetCode解题报告:

LeetCode278——第一个错误的版本