35. Search Insert Position
1. Description
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.
2. Example
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
Example 4:
Input: nums = [1,3,5,6], target = 0
Output: 0
Example 5:
Input: nums = [1], target = 0
Output: 0
3. Constraints
- 1 <= nums.length <= $10^4$
- $-10^4$ <= nums[i] <= $10^4$
- nums contains distinct values sorted in ascending order.
- $-10^4$ <= target <= $10^4$
4. Solutions
My Accepted Solution
n = nums.size()
Time complexity : O(logn)
Space complexity : O(1)
class Solution {
public:
int searchInsert(vector<int>& nums, int target) {
if (target < *nums.begin() || target > *nums.rbegin()) {
return target < *nums.begin() ? 0 : nums.size();
}
int index;
for (long left = 0, right = nums.size() - 1; left <= right; ) {
long middle = (left + right) / 2;
if (nums[middle] < target) {
left = middle + 1;
} else {
index = middle;
right = middle - 1;
}
}
return index;
}
};