题目来源:https://leetcode.com/problems/search-insert-position/ 点击打开链接
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.
Here are few examples.
[1,3,5,6], 5 → 2
[1,3,5,6], 2 → 1
[1,3,5,6], 7 → 4
[1,3,5,6], 0 → 0
分析:
这题要求在一个排好序的数组查找某值value, 如果存在则返回对应index, 不存在则返回能插入到数组中的
index( 保证数组有序) 。对于不存在的情况, 我们只需要在数组里面找到最小的一个值大于value的index, 这个index就是我们可以
插入的位置。 譬如[1, 3, 5, 6], 查找2, 我们知道3是最小的一个大于2的数值, 而3的index为1, 所以我们需
要在1这个位置插入2。 如果数组里面没有值大于value, 则插入到数组末尾。
class Solution35{
public:
int searchInsert(vector<int>& nums, int target){
int left = 0;
int right = nums.size() - 1;
while (left <= right){
int mid = left + (right-left) / 2;
if (target == nums[mid]){
return mid;
}
else if (target < nums[mid]){
right = mid - 1;
}
else{
left = mid + 1;
}
}
return left;
}
};
int main()
{
Solution35 solution;
{
vector<int> v = { 1, 3, 5, 6 };
int target = 5;
cout << solution.searchInsert(v, target);
}
getchar();
return 0;
}
搜索插入位置算法解析
本文介绍了一种在已排序数组中查找目标值并确定其插入位置的算法。通过二分查找实现,确保数组有序性的同时提高了查找效率。文章提供了详细的代码示例。
223

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



