LeetCode日記 7) 之第乙個錯誤的版本

2021-10-09 06:40:35 字數 946 閱讀 6333

你是產品經理,目前正在帶領乙個團隊開發新的產品。不幸的是,你的產品的最新版本沒有通過質量檢測。由於每個版本都是基於之前的版本開發的,所以錯誤的版本之後的所有版本都是錯的。

假設你有 n 個版本 [1, 2, ..., n],你想找出導致之後所有版本出錯的第乙個錯誤的版本。

你可以通過呼叫 bool isbadversion(version) 介面來判斷版本號 version 是否在單元測試**錯。實現乙個函式來查詢第乙個錯誤的版本。你應該儘量減少對呼叫 api 的次數。

示例:給定 n = 5,並且 version = 4 是第乙個錯誤的版本。

呼叫 isbadversion(3) -> false

呼叫 isbadversion(5) -> true

呼叫 isbadversion(4) -> true

所以,4 是第乙個錯誤的版本。 

方法:二分搜尋。由於可以把n個版本看成是有序的陣列,需要尋找乙個符號條件的數字。這些版本有這個規律:第乙個錯誤的版本的前乙個版本是正確的,後面的版本都是錯誤的;如果找到乙個正確的版本,那麼它前面的所有版本也是正確的。

首先,設定乙個l和h分別指向陣列頭和尾。計算mid=(l+h)/2。然後分為以下情況:

當isbadversion(mid-1)=false(前乙個版本正確)時,說明當前版本就是第乙個錯誤版本,直接返回第mid個元素;

當isbadversion(mid-1)=true時(前乙個版本錯誤,所以mid這個版本不是第乙個錯誤版本),此時正確版本依然在mid-1的前面,所以讓h=(mid-1)-1=mid-2;

// the api isbadversion is defined for you.

// bool isbadversion(int version);

class solution else}}

return l;

}};

leetcode之278第乙個錯誤的版本

你是產品經理,目前正在帶領乙個團隊開發新的產品。不幸的是,你的產品的最新版本沒有通過質量檢測。由於每個版本都是基於之前的版本開發的,所以錯誤的版本之後的所有版本都是錯的。假設你有 n 個版本 1,2,n 你想找出導致之後所有版本出錯的第乙個錯誤的版本。你可以通過呼叫 bool isbadversio...

leetcode解題之第乙個錯誤的版本

你是產品經理,目前正在帶領乙個團隊開發新的產品。不幸的是,你的產品的最新版本沒有通過質量檢測。由於每個版本都是基於之前的版本開發的,所以錯誤的版本之後的所有版本都是錯的。假設你有 n 個版本 1,2,n 你想找出導致之後所有版本出錯的第乙個錯誤的版本。你可以通過呼叫 bool isbadversio...

silverlight學習日記 第乙個試水架構

採用微軟提供的silverlight wcf ria service ado.net entity或者是linqtosql對於開發小的,且業務邏輯不太複雜的系統來說確實很簡單,也很快,在這兩天的學習中,有些小體會,但採用已有的框架 比如,nhibernate,sprint.net等 一向來都不是我的...