# 704. Binary Search ###### tags: `Python`,`Leetcode` https://leetcode.com/problems/binary-search/ ## MyCode! ![](https://i.imgur.com/o3S6qpq.png) ## 解題思路 * 使用 two-pointer 做 Binary ,這樣做就會使得時間複雜度 < O(N) * 創造頭跟尾的 index ,當題目輸入 Target: 1. 題目給的 List 早已由小到大排序好 2. 頭 + 尾 // 2 = mid 的 index 3. **if Target < mid**,表示 Target 在前半段,把尾 index 改成 mid - 1 4. **if Target > mid**,表示 Target 在後半段,把頭 index 改成 mid + 1 5. **if Target = mid**, Congrat! return the mid 6. **else :** Target is not in the List 一直對折,都找不到一樣的,最後頭尾 index 一樣,數值卻不同。輸出 -1 ## 解法 ### Step 1:創造頭尾作為 index (Global) ### Step 2 : 頭 + 尾 // 2 = mid 的 index (Local) ### Step 3 : 因為 List 本來就排序好,若**頭 <= 尾**才是正常可執行條件 1. **if Target < mid**,表示 Target 在前半段,把尾 index 改成 mid - 1 2. **if Target > mid**,表示 Target 在後半段,把頭 index 改成 mid + 1 3. **if Target = mid**, Congrat! return the mid 4. **else :** Target is not in the List ### Step 4 : 若**尾 < 頭**則代表從頭到尾都沒有找到自己要的目標值