[LeetCode35]Search Insert Position

搜索插入位置算法解析
本文介绍了一种在已排序数组中查找目标值并确定其插入位置的算法。通过二分查找实现,确保数组有序性的同时提高了查找效率。文章提供了详细的代码示例。

题目来源: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;
}


评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值