搜索插入位置
一、题目描述
给定一个有序数组。需要插入一个元素。返回插入索引。
请必须使用时间复杂度为 O(log n) 的算法。
实例
输入: nums = [1,3,5,6], target = 5
输出: 2
输入: nums = [1,3,5,6], target = 2
输出: 1
输入: nums = [1,3,5,6], target = 7
输出: 4
二、解题思路
二分法查找位置。只需要O(log n)的时间复杂度。就是取一个中间元素,和插入的元素比较,由于是有序数组,一次即可排除一半的元素。最后定位到需要插入元素的索引位置。
三、解题方法
方法一
二分法查找
代码实现
class Solution {
public int searchInsert(int[] nums, int target) {
int n = nums.length;
int left = 0;
int right = n-1;
int ans = n;
while(left <= right){
int mid = (right+left)/2;
if (target > nums[mid]) {
left = mid +1;
} else {
ans = mid;
right = mid - 1;
}
}
return ans; }
}
原创文章,作者:ItWorker,如若转载,请注明出处:https://blog.ytso.com/289737.html