LeetCode初級算法--排序和搜索01:第一個錯誤的版本
一、引子
這是由LeetCode官方推出的的經典面試題目清單~
這個模塊對應的是探索的初級算法~旨在幫助入門算法。我們第一遍刷的是leetcode推薦的題目。
二、題目
你是產品經理,目前正在帶領一個團隊開發新的產品。不幸的是,你的產品的最新版本沒有通過質量檢測。由于每個版本都是基于之前的版本開發的,所以錯誤的版本之后的所有版本都是錯的。
假設你有 n 個版本 [1, 2, ..., n],你想找出導致之后所有版本出錯的第一個錯誤的版本。
你可以通過調用 bool isBadVersion(version) 接口來判斷版本號 version 是否在單元測試中出錯。實現一個函數來查找第一個錯誤的版本。你應該盡量減少對調用 API 的次數。
示例:
給定 n = 5,并且 version = 4 是第一個錯誤的版本。
調用 isBadVersion(3) -> false
調用 isBadVersion(5) -> true
調用 isBadVersion(4) -> true
所以,4 是第一個錯誤的版本。
1、思路
首先我們可以想到的就是把整個列表都順序遍歷一遍,第一次調用接口出現False的下一個為True的就是我們要求的值,但是這個算法會超時。
我們使用二分查找:
我們要尋找第一個錯誤版本,也就是要保留最后一個false之后的第一個true。所以在更新邊界的時候,右邊界就不用減1了,這樣最后當左右相等時一定是第一個true。
2、編程實現
# 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 = 1
right = n
while left
本文由博客一文多發平臺 OpenWrite 發布!
審核編輯 黃昊宇
-
人工智能
+關注
關注
1804文章
48717瀏覽量
246544 -
機器學習
+關注
關注
66文章
8492瀏覽量
134097 -
深度學習
+關注
關注
73文章
5554瀏覽量
122487 -
leetcode
+關注
關注
0文章
20瀏覽量
2429
發布評論請先 登錄
HRTIM變頻控制輸出的第一個周期頻率異常的原因?
HRTIM變頻控制輸出的第一個周期頻率異常的原因?
ADS1274用DRDY+TDM輸出模式下,讀到的第一個字節是無效的,為什么?
藍橋杯的第一個項目,點亮一個LED

評論