你是產品經理,目前正在帶領乙個團隊開發新的產品。不幸的是,你的產品的最新版本沒有通過質量檢測。由於每個版本都是基於之前的版本開發的,所以錯誤的版本之後的所有版本都是錯的。
假設你有 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等 一向來都不是我的...