LeetCode35-搜索插入位置
35. 搜索插入位置:
给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入的位置。
请必须使用时间复杂度为 O(log n) 的算法。
示例 1:
输入: nums = [1,3,5,6], target = 5
输出: 2
示例 2:
输入: nums = [1,3,5,6], target = 2
输出: 1
示例 3:
输入: nums = [1,3,5,6], target = 7
输出: 4
示例 4:
输入: nums = [1,3,5,6], target = 0
输出: 0
示例 5:
输入: nums = [1], target = 0
输出: 0
提示:
- 1 <= nums.length <= 10^4
- -10^4 <= nums[i] <= 10^4
- nums 为无重复元素的升序排列数组
- -10^4 <= target <= 10^4
解题思路1:
简单二分,找到第一个大于等于target的下标。
class Solution {
public:
int searchInsert(vector<int>& nums, int target) {
int len=nums.size();
int l=0,r=len;
while(l<r) {
int mid=(l+r)>>1;
if(nums[mid]>=target)
r=mid;
else
l=mid+1;
}
return l;
}
};
这篇博客介绍了如何利用二分查找法解决LeetCode第35题,即在一个有序数组中寻找目标值的索引或插入位置。题目要求时间复杂度为O(logn),解题思路是通过不断缩小搜索范围,找到第一个大于等于目标值的元素的下标。当找到目标值时返回其索引,否则返回插入位置。
288

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



