其他分享
首页 > 其他分享> > 搜索插入位置

搜索插入位置

作者:互联网

搜索插入位置

一、题目描述

给定一个有序数组。需要插入一个元素。返回插入索引。
请必须使用时间复杂度为 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;    }
}

标签:target,nums,int,位置,mid,插入,搜索,ans
来源: https://www.cnblogs.com/zjjtt/p/16698515.html