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
Example 1:
Input: [1,3,5,6], 0 Output: 0
class Solution {
public:
int searchInsert(vector<int>& nums, int target) {
int index = -1;
int begin = 0;
int end = nums.size()-1;
while(index == -1)
{
int mid = (begin+end)/2;
if(target == nums[mid])
index = mid;
else if(target<nums[mid])
{
if(mid == 0 || target > nums[mid-1])
index = mid;
end = mid-1;
}
else if(target>nums[mid])
{
if(mid==nums.size()-1 || target<nums[mid+1])
index = mid + 1;
begin = mid + 1;
}
}
return index;
}
};
查找插入位置算法
本文介绍了一个查找并返回目标值在已排序数组中应插入位置的算法。通过二分搜索法确定目标值的理想位置,适用于没有重复元素的情况。文章提供了三个示例输入及预期输出,并附带了完整的C++实现代码。
436

被折叠的 条评论
为什么被折叠?



