敘述
這是 Algorithm I 的第一天第三個題目,總共有三題。
- 難度: 
Easy - 花費時間: 1hr
 - 題目
 
傳入一個陣列包含由小到大排序好的不重複數字,和一個目標,如果目標在陣列中,回傳目標的 index ,如果不在,回傳目標應該要插入的 index 。
點我開啟限制與範例
限制:
1 <= nums.length <= 104-104 <= nums[i] <= 104numscontains distinct values sorted in ascending order.-104 <= target <= 104
Example 1:
1  | Input: nums = [1,3,5,6], target = 5  | 
Example 2:
1  | Input: nums = [1,3,5,6], target = 2  | 
Example 3:
1  | Input: nums = [1,3,5,6], target = 7  | 
筆記
運用 Binary Search 即可:
- 設定左邊(left)為 0 ,右邊(right)為 nums.length - 1 。
 - 只要 right > left 就繼續找。
 - 算出中點(middle) = (right + left) / 2
 - 比較 nums[mid] 跟 target:
- nums[mid] < target: 把左邊移到中間 + 1
 - nums[mid] > target: 把右邊移到中間
 - nums[mid] = target: 回傳 mid
 
 - 比較 nums[right] < target: 回傳 right + 1
- 因為如果 target 不存在在陣列,那麼要回傳他應該插入哪,
 - 若最後的 target 比 nums[right] 大,那他應該插在 right 後面,所以要 + 1
 - 若沒有 他應該插在 right 的位置,(不用做判斷,會被第 6 步接住。)
 
 - 回傳 right
 
程式碼
1  | /**  | 
成績
