搜索微信公衆號:'AI-ming3526'或者'計算機視覺這件小事' 獲取更多算法、機器學習乾貨
csdn:https://blog.csdn.net/baidu_31657889/
csdn:https://blog.csdn.net/abcgkj/
github:https://github.com/aimi-cn/AILearnerspython
這是由LeetCode官方推出的的經典面試題目清單~
這個模塊對應的是探索的初級算法~旨在幫助入門算法。咱們第一遍刷的是leetcode推薦的題目。
查看完整的劍指Offer算法題解析請點擊github連接:
github地址git
你是產品經理,目前正在帶領一個團隊開發新的產品。不幸的是,你的產品的最新版本沒有經過質量檢測。因爲每一個版本都是基於以前的版本開發的,因此錯誤的版本以後的全部版本都是錯的。github
假設你有 n 個版本 [1, 2, ..., n],你想找出致使以後全部版本出錯的第一個錯誤的版本。面試
你能夠經過調用 bool isBadVersion(version) 接口來判斷版本號 version 是否在單元測試中出錯。實現一個函數來查找第一個錯誤的版本。你應該儘可能減小對調用 API 的次數。算法
示例:編程
給定 n = 5,而且 version = 4 是第一個錯誤的版本。 調用 isBadVersion(3) -> false 調用 isBadVersion(5) -> true 調用 isBadVersion(4) -> true 因此,4 是第一個錯誤的版本。
首先咱們能夠想到的就是把整個列表都順序遍歷一遍,第一次調用接口出現False的下一個爲True的就是咱們要求的值,可是這個算法會超時。微信
咱們使用二分查找:機器學習
咱們要尋找第一個錯誤版本,也就是要保留最後一個false以後的第一個true。因此在更新邊界的時候,右邊界就不用減1了,這樣最後當左右相等時必定是第一個true。函數
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 """ left = 1 right = n while left<right: mid = left + (right-left)//2 if isBadVersion(mid): right = mid else: left = mid+1 return left
AIMI-CN AI學習交流羣【1015286623】 獲取更多AI資料
分享技術,樂享生活:咱們的公衆號計算機視覺這件小事每週推送「AI」系列資訊類文章,歡迎您的關注!
本文由博客一文多發平臺 OpenWrite 發佈!