美文网首页程序员
力扣 278 第一个错误的版本

力扣 278 第一个错误的版本

作者: zhaojinhui | 来源:发表于2020-08-19 11:10 被阅读0次

题意:给定一个数组,找出第一个时错误的版本序号,结果一定存在

思路:对数组进行二分查找,开始设定起始s和终止e

  1. 中间的值是正确的版本,更新s为m+1
  2. 中间的值是错误的版本,更新e为m-1
  3. 退出条件为s<e
  4. 退出后的s如果是正确的版本那么,返回s+1,否则返回s,因为结果一定存在

思想:二分查找

复杂度:时间O(logn),空间O(1)

public class Solution extends VersionControl {
    public int firstBadVersion(int n) {
        int s = 1;
        int e = n;
        while(s<e) {
            int m = s + (e-s)/2;
            boolean res = isBadVersion(m);
            if(res) {
                e = m - 1;
            } else {
                s = m + 1;
            }
        }
        boolean temp = isBadVersion(s);
        if(temp) 
            return s;
        else
            return s+1;
    }
}

相关文章

网友评论

    本文标题:力扣 278 第一个错误的版本

    本文链接:https://www.haomeiwen.com/subject/yvsrjktx.html