---
# System prepended metadata

title: 704. Binary Search
tags: [Leetcode, Python]

---

# 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 : 若**尾 < 頭**則代表從頭到尾都沒有找到自己要的目標值


     