算法分析与设计作业题
作业来源
Given a sorted array 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 may assume no duplicates in the array.
Example 1:
Input: [1,3,5,6], 5
Output: 2
Example 2:
Input: [1,3,5,6], 2
Output: 1
Example 3:
Input: [1,3,5,6], 7
Output: 4
二分法实现:
class Solution {
public:
int searchInsert(vector<int> &nums, int target) {
if (nums.empty()){
return 0;
}
int low = 0;
int high = (int)(nums.size() - 1);
return binarySearch(nums, low, high, target);
}
private:
int binarySearch(vector<int> nums, int low, int high, int target){
while (low <= high) {
int mid = low + (high - low)/2;
if (nums[mid] == target) {
return mid;
}
if (target > nums[mid]) {
low = mid + 1;
}
if (target < nums[mid]) {
high = mid - 1;
}
}
return low;
}
};