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 發布!
審核編輯 黃昊宇
聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。
舉報投訴
-
人工智能
+關注
關注
1817文章
50094瀏覽量
265302 -
機器學習
+關注
關注
66文章
8553瀏覽量
136931 -
深度學習
+關注
關注
73文章
5598瀏覽量
124396 -
leetcode
+關注
關注
0文章
20瀏覽量
2544
發布評論請先 登錄
相關推薦
熱點推薦
???????使用 DMM Web API 獲取搜索列表數據
? ?DMM 平臺提供了豐富的 Web API 接口,允許開發者獲取其平臺上的各種數據。其中一個常用的接口是用于獲取搜索列表結果的 API。本文將介紹如何調用此 API 來獲取商品或內容的列表信息
工業數據采集的真相:99%的企業都走錯了第一步
大多數企業在數據采集上犯的第一個錯誤是:從硬件開始思考。
“我們需要幾個網關?”
“哪種型號的采集模塊?”
“預算夠買多少臺設備?”
這些看似合理的問題,實際上把解決方案局限在了“硬件采購”的層面。真正的數據采集,應該從三
固件版本錯配:一個讓老工程師都栽過跟頭的“低級錯誤”
在硬件生產與研發調試中,固件版本與硬件版本不匹配所導致的問題,其排查成本往往遠高于問題本身。此類錯誤并非偶然的操作失誤,而是暴露了從開發到生產移交過程中版本管理流程的缺失。
發表于 12-18 10:31
淘寶圖片搜索商品API指南
一、摘要 淘寶圖片搜索商品API是基于圖像識別技術的智能搜索接口,允許用戶通過上傳商品圖片來搜索相似或同款商品。該接口廣泛應用于比價、找同款、商品識別等電商場景。 二、接口概述 1.功
線性搜索與二分搜索介紹
線性搜索(Linear Search):從數組的第一個元素開始,依次將當前元素與目標值進行比較,直到找到目標值或搜索完整個數組。
二分搜索(Binary Search):在有序數組中查
發表于 12-01 07:36
Linux 下交叉編譯實戰:跑起來你的第一個 STM32 程序
跑起來你的第一個STM32程序。一、準備工作在開始之前,需要準備:1、Linux開發環境Ubuntu、Debian或其他主流發行版都可以。2、ARMGCC交叉編譯工具
**CW32L012****開發評估板的第一個程序**
CW32L012****開發評估板的第一個程序
最近以15.99在CW32生態社區入手了這塊CW32L012開發評估板,我迫不及待的燒錄進電燈程序,看看這塊板子是否是正常的,能否滿足我后面的學習
發表于 11-22 00:09
請問Linux+rtos的1.9版本sdk大核開機自啟動一個程序怎么關閉?
編譯開機大核心就出現一個程序報錯,01開發板csi2上面默認接的攝像頭是gc2093的,運行的是ov5647
期待結果和實際結果
可以關閉這個自啟動程序;也希望順帶知道我要開啟自啟動的程序放在哪里
軟硬件
發表于 07-22 06:07
HRTIM變頻控制輸出的第一個周期頻率異常的原因?
在使用STM32G474CBT6的HRTIM_Mater、HRTIM_TIMER_B和HRTIM_TIMER_D輸出同步互補的四路輸出時,關閉4路輸出和三個定時器的計數后,再次開啟時第一個周期的頻率
發表于 04-25 06:17
一文教你構建第一個應用程序
構建第一個應用程序
創建一個新工程
步驟 1通過如下兩種方式,打開工程創建向導界面。
如果當前未打開任何工程,可以在 DevEco Studio 的歡迎頁,選擇“Projects &
發表于 04-24 06:41
HRTIM變頻控制輸出的第一個周期頻率異常的原因?
在使用STM32G474CBT6的HRTIM_Mater、HRTIM_TIMER_B和HRTIM_TIMER_D輸出同步互補的四路輸出時,關閉4路輸出和三個定時器的計數后,再次開啟時第一個周期的頻率
發表于 04-22 12:08
如何在Ubuntu 24.04上運行5.4.47版本?
構建 Yocto 包,但并沒有真正工作。第一個問題是 Python 版本。您肯定需要使用 2.7 和 3.9 版本,它們不能直接使用。通過使用 pyenv,可以解決 Python 問題。
現在我最終
發表于 04-11 06:08
LeetCode初級算法-排序和搜索01:第一個錯誤的版本
評論