35.搜素插入位置
35. 搜索插入位置
难度:简单
给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入的位置。
请必须使用时间复杂度为 O(log n) 的算法。
示例1:
输入: nums = [1,3,5,6], target = 5 输出: 2
示例2:
输入: nums = [1,3,5,6], target = 2 输出: 1
提示:
- 1 <= nums.length <= 104
- -104 <= nums[i] <= 104
- nums 为 无重复元素 的 升序 排列数组
- -104 <= target <= 104
标签:
思路:
Java
class Solution {
public int searchInsert(int[] nums, int target) {
//由时间复杂度得二分
int left =0,right = nums.length-1;
while(left<=right){
int mid = left+(right-left)/2;
if(nums[mid]>target){
right = mid - 1;
}
else if(nums[mid]<target){
left = mid +1;
}
else{
return mid;
}
}
//插入位置
return left;
}
}
复杂度:
时间复杂度:O(log2n)
空间复杂度:O(1)