Problem Statement:
Given a sorted array of distinct integers and a target value, return the index if the target is found. If not, return the index where it would be if it were inserted in order. You must write an algorithm with O(log n) runtime complexity.
Example 1:
Input: nums = [1,3,5,6], target = 5 Output: 2
Example 2:
Input: nums = [1,3,5,6], target = 2 Output: 1
Example 3:
Input: nums = [1,3,5,6], target = 7 Output: 4
Solution:
Very classic application of binary search.
- We are looking for the minimal k value satisfyingÂ
nums[k] >= target
, and we can just copy-paste our template. - Notice that our solution is correct regardless of whether the input arrayÂ
nums
 has duplicates. - Also notice that the input Â
target
 might be larger than all elements inÂnums
 and therefore needs to placed at the end of the array.- That’s why we should initializeÂ
right = len(nums)
 instead ofÂright = len(nums) - 1
.
- That’s why we should initializeÂ