Java教程

搜索插入位置

本文主要是介绍搜索插入位置,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

搜索插入位置

一、题目描述

给定一个有序数组。需要插入一个元素。返回插入索引。
请必须使用时间复杂度为 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;    }
}
这篇关于搜索插入位置的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!