搜索插入位置


搜索插入位置

一、题目描述

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

(0)
上一篇 2022年9月16日 05:58
下一篇 2022年9月16日 05:58

相关推荐

发表回复

登录后才能评论