联系我
×

278. 第一个错误的版本

查看原题

解题思路

二分算法判断
如果当前项不是错误版本,说明错误版本在后面更新 right = mid + 1
如果当前是错误版本,则需要继续判断当前是不是第一个错误版本
- 如果当前是错误版本且第 mid - 1 不是错误版本,则说明mid是第一个错误版本
- 如果当前是错误版本且第 mid - 1 是错误版本,则继续循环

代码

/**
 * Definition for isBadVersion()
 * 
 * @param {integer} version number
 * @return {boolean} whether the version is bad
 * isBadVersion = function(version) {
 *     ...
 * };
 */

/**
 * @param {function} isBadVersion()
 * @return {function}
 */
var solution = function(isBadVersion) {
    /**
     * @param {integer} n Total versions
     * @return {integer} The first bad version
     */
    return function(n) {
        let left = 1;
        let right = n;
        while(left <= right) {
            mid = Math.floor((left + right) / 2)
            if(!isBadVersion(mid)){
                left = mid+1;
            }else if(isBadVersion(mid)){
                if(isBadVersion(mid - 1)){
                    right = mid-1;
                }else{
                    return mid;
                }
            }
        }
    };
};
posted @ 2021-12-23 16:44  .筱  阅读(27)  评论(0)    收藏  举报