1. 程式人生 > >第一個錯誤的程式碼版本

第一個錯誤的程式碼版本

程式碼庫的版本號是從 1 到 n 的整數。某一天,有人提交了錯誤版本的程式碼,因此造成自身及之後版本的程式碼在單元測試中均出錯。請找出第一個錯誤的版本號。
你可以通過 isBadVersion 的介面來判斷版本號 version 是否在單元測試中出錯,具體介面詳情和呼叫方法請見程式碼的註釋部分。
 注意事項
請閱讀上述程式碼,對於不同的語言獲取正確的呼叫 isBadVersion 的方法,比如java的呼叫方式是SVNRepo.isBadVersion(v)
樣例
給出 n=5
呼叫isBadVersion(3),得到false
呼叫isBadVersion(5),得到true
呼叫isBadVersion(4),得到true

此時我們可以斷定4是第一個錯誤的版本號

/**
 * public class SVNRepo {
 *     public static boolean isBadVersion(int k);
 * }
 * you can use SVNRepo.isBadVersion(k) to judge whether 
 * the kth code version is bad or not.
*/
class Solution {
    /**
     * @param n: An integers.
     * @return: An integer which is the first bad version.
     */
    public int findFirstBadVersion(int n) {
          int min = 1, max = n, mid = 0;
        while(min <= max){
            mid = min + (max - min) / 2;
            if(SVNRepo.isBadVersion(mid)){
                max = mid - 1;
            } else {
                min = mid + 1;
            }
        }
        return min;
    }
}