第乙個錯誤的版本

2021-09-22 20:14:56 字數 2151 閱讀 8292

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

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

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

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

呼叫 isbadversion(3) -> false

呼叫 isbadversion(5) -> true

呼叫 isbadversion(4) -> true

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

解題思路:

本題是個查詢類問題。可以理解為找出類似序列[0 0 0 1 1 1]中第乙個值為 1 的元素的下標。採用二分查詢求解。

解題時,可以自己想一些測試用例,然後再思考解題思路。

python:

用到了遞迴,比較費時。

# the isbadversion api is already defined for you.

# @param version, an integer

# @return a bool

# def isbadversion(version):

class solution:

def firstbadversion(self, n):

""":type n: int

:rtype: int

"""#二分查詢

if not isbadversion(n):

return none

if isbadversion(1):

return 1

return self.search2(1, n)

def search2(self, start, end):

if start == end:

return start

mid = (start + end)//2

if isbadversion(mid):

m = self.search2(start, mid) #為什麼不是mid -1

else:

m = self.search2(mid+1, end) #mid+1換成mid行嗎

return m

貼乙個大神(it_job)o(logn)時間複雜度的:

# the isbadversion api is already defined for you.

# @param version, an integer

# @return a bool

# def isbadversion(version):

class solution:

def firstbadversion(self, n):

""":type n: int

:rtype: int

"""left=0;right=n

while(true):

mid=(left+right)//2

if isbadversion(mid)==false and isbadversion(mid+1)==true:

return mid+1

elif isbadversion(mid)==false and isbadversion(mid+1)==false:

left=mid

elif isbadversion(mid)==true and isbadversion(mid+1)==true:

right=mid

c++

方法一:

// forward declaration of isbadversion api.

bool isbadversion(int version);

class solution

else

}return left;

}};

第乙個錯誤的版本

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

第乙個錯誤的版本

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

第乙個錯誤的版本

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