# 278. First Bad Version ###### tags: `Python`,`Leetcode` https://leetcode.com/problems/first-bad-version/ ## MyCode!![](https://i.imgur.com/JRlq6fQ.png) ## 解題思路 * 題目任務:有一檢查版本是否錯誤的 API Function(),我們的任務是要找出第一個出錯的版本,在該錯誤版本之後的,都是錯誤的 * Function output Ture means that version bad * 使用從頭開始檢視的 for loop ,Time complexity = n * 使用 Binary Search , Time complexity = log n ***(better)*** ## 解法 ### Step 1 :設立雙頭,但因為 version 是 1 ~ n , 所以: * left = 1 (從第一個版本開始測) * right = n (最後一個版本) ### 因為要不斷砍半 ➡️ 尋找 First Bad。是一個重複歷程,建立一個 while left < right 的 loop 去找 * **mid = (left + right) // 2** 1. 此中位數會因為左右變化而跟著變化,希望每執行一圈更新 Global 的 left & right,然後 Local 的 mid 再隨之應變 * **Function (mid) == True**,第一個壞的在更前面: 1. right = mid * **else : Function (mid) == False**,第一個壞的在更後面: 1. left = mid +1