74.第一個錯誤的代碼版本(高頻)

描述

代碼庫的版本號是從 1 到 n 的整數(shù)。某一天,有人提交了錯誤版本的代碼,因此造成自身及之后版本的代碼在單元測試中均出錯。請找出第一個錯誤的版本號。你可以通過 isBadVersion 的接口來判斷版本號 version 是否在單元測試中出錯,具體接口詳情和調(diào)用方法請見代碼的注釋部分。

注意事項

請閱讀上述代碼,對于不同的語言獲取正確的調(diào)用 isBadVersion 的方法,比如java的調(diào)用方式是SVNRepo.isBadVersion(v)

樣例

給出 n=5
調(diào)用isBadVersion(3),得到false
調(diào)用isBadVersion(5),得到true
調(diào)用isBadVersion(4),得到true
此時我們可以斷定4是第一個錯誤的版本號

挑戰(zhàn)

調(diào)用 isBadVersion 的次數(shù)越少越好

思路

本題從第一個錯誤開始,之后一系列數(shù)全部錯誤,尋找第一份錯誤,實際上就是經(jīng)典二分法模板加一個SVNRepo.isBadVersion函數(shù)調(diào)用

代碼

class Solution {
    public int findFirstBadVersion(int n) {
        int start = 1;
        int end = n;
        while (start + 1 < end) {
            int mid = start + (end - start) / 2;
            if (SVNRepo.isBadVersion(mid)) {
                end = mid;
            }
            else {
                start = mid;
            }
        }
        
        if (SVNRepo.isBadVersion(start)) {
            return start;
        }
        else {
            return end;
        }
    }
}
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關(guān)閱讀更多精彩內(nèi)容

  • 國家電網(wǎng)公司企業(yè)標準(Q/GDW)- 面向?qū)ο蟮挠秒娦畔?shù)據(jù)交換協(xié)議 - 報批稿:20170802 前言: 排版 ...
    庭說閱讀 12,308評論 6 13
  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 178,794評論 25 709
  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 136,506評論 19 139
  • ¥開啟¥ 【iAPP實現(xiàn)進入界面執(zhí)行逐一顯】 〖2017-08-25 15:22:14〗 《//首先開一個線程,因...
    小菜c閱讀 7,295評論 0 17
  • 格格獨自出門,鎖好了門,進了電梯,在電梯里的一個叔叔問“你怎么一個人???”,格格回答道“我今天一個人去幼兒...
    阿連格格閱讀 344評論 0 0

友情鏈接更多精彩內(nèi)容