# 278. First Bad Version
###### tags: `Python`,`Leetcode`
https://leetcode.com/problems/first-bad-version/
## MyCode!
## 解題思路
* 題目任務:有一檢查版本是否錯誤的 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