LeetCode 第一個錯誤的版本

你是產(chǎn)品經(jīng)理蚊丐,目前正在帶領(lǐng)一個團(tuán)隊(duì)開發(fā)新的產(chǎn)品。
不幸的是常拓,你的產(chǎn)品的最新版本沒有通過質(zhì)量檢測颈嚼。
由于每個版本都是基于之前的版本開發(fā)的,所以錯誤的版本之后的所有版本都是錯的灾而。

假設(shè)你有 n 個版本 [1, 2, ..., n]胡控,你想找出導(dǎo)致之后所有版本出錯的第一個錯誤的版本。

你可以通過調(diào)用 bool isBadVersion(version) 接口來判斷版本號 version 是否在單元測試中出錯旁趟。
實(shí)現(xiàn)一個函數(shù)來查找第一個錯誤的版本昼激。你應(yīng)該盡量減少對調(diào)用 API 的次數(shù)。

示例:

給定 n = 5锡搜,并且 version = 4 是第一個錯誤的版本橙困。

調(diào)用 isBadVersion(3) -> false
調(diào)用 isBadVersion(5) -> true
調(diào)用 isBadVersion(4) -> true

所以,4 是第一個錯誤的版本耕餐。 
解法一:

這道題的意思是有一系列版本凡傅,其中有一個版本是錯誤的,而且后面的版本都是錯誤的肠缔,然后給了一個 API 接口可以用來判定當(dāng)前版本是否錯誤夏跷,讓我們盡可能少的調(diào)用這個 API哼转,找出第一個壞版本。理解了題意之后槽华,可以很快想到使用二分查找法释簿。因?yàn)檎_版本和錯誤版本之間有個邊界,所以我們就用二分法來找這個邊界硼莽,對 middle 值調(diào)用 API 接口庶溶,如果是錯誤版本,說明邊界在左邊懂鸵,則把 middle 賦值給 hight偏螺,如果是正確版本,則說明邊界在右邊匆光,則把 middle + 1賦給 low套像,最后返回 low 即可。需要注意的是终息,如果 low 和 hight 都特別大的話夺巩,那么 low + hight 可能會溢出,我們的處理方法就是把計(jì)算中間值變成 low + (hight - low )/2周崭,以此來避免溢出問題柳譬。

    public int firstBadVersion(int n) {

        int low = 1, high = n;

        while (low < high) {

            int middle = low + (high - low) / 2;

            if (isBadVersion(middle)) {
                high = middle;
            } else {
                low = middle + 1;
            }
        }
        return low;
    }
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市续镇,隨后出現(xiàn)的幾起案子美澳,更是在濱河造成了極大的恐慌,老刑警劉巖摸航,帶你破解...
    沈念sama閱讀 212,383評論 6 493
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件制跟,死亡現(xiàn)場離奇詭異,居然都是意外死亡酱虎,警方通過查閱死者的電腦和手機(jī)雨膨,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,522評論 3 385
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來读串,“玉大人聊记,你說我怎么就攤上這事〉粒” “怎么了甥雕?”我有些...
    開封第一講書人閱讀 157,852評論 0 348
  • 文/不壞的土叔 我叫張陵,是天一觀的道長胀茵。 經(jīng)常有香客問我社露,道長,這世上最難降的妖魔是什么琼娘? 我笑而不...
    開封第一講書人閱讀 56,621評論 1 284
  • 正文 為了忘掉前任峭弟,我火速辦了婚禮附鸽,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘瞒瘸。我一直安慰自己坷备,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,741評論 6 386
  • 文/花漫 我一把揭開白布情臭。 她就那樣靜靜地躺著省撑,像睡著了一般。 火紅的嫁衣襯著肌膚如雪俯在。 梳的紋絲不亂的頭發(fā)上竟秫,一...
    開封第一講書人閱讀 49,929評論 1 290
  • 那天,我揣著相機(jī)與錄音跷乐,去河邊找鬼肥败。 笑死,一個胖子當(dāng)著我的面吹牛愕提,可吹牛的內(nèi)容都是我干的馒稍。 我是一名探鬼主播,決...
    沈念sama閱讀 39,076評論 3 410
  • 文/蒼蘭香墨 我猛地睜開眼浅侨,長吁一口氣:“原來是場噩夢啊……” “哼纽谒!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起仗颈,我...
    開封第一講書人閱讀 37,803評論 0 268
  • 序言:老撾萬榮一對情侶失蹤佛舱,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后挨决,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,265評論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡订歪,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,582評論 2 327
  • 正文 我和宋清朗相戀三年脖祈,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片刷晋。...
    茶點(diǎn)故事閱讀 38,716評論 1 341
  • 序言:一個原本活蹦亂跳的男人離奇死亡盖高,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出眼虱,到底是詐尸還是另有隱情喻奥,我是刑警寧澤,帶...
    沈念sama閱讀 34,395評論 4 333
  • 正文 年R本政府宣布捏悬,位于F島的核電站撞蚕,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏过牙。R本人自食惡果不足惜甥厦,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 40,039評論 3 316
  • 文/蒙蒙 一纺铭、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧刀疙,春花似錦舶赔、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,798評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至疚鲤,卻和暖如春蚁袭,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背石咬。 一陣腳步聲響...
    開封第一講書人閱讀 32,027評論 1 266
  • 我被黑心中介騙來泰國打工揩悄, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人鬼悠。 一個月前我還...
    沈念sama閱讀 46,488評論 2 361
  • 正文 我出身青樓删性,卻偏偏與公主長得像,于是被迫代替她去往敵國和親焕窝。 傳聞我的和親對象是個殘疾皇子蹬挺,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,612評論 2 350

推薦閱讀更多精彩內(nèi)容