美文网首页
搜索插入位置

搜索插入位置

作者: Audience0 | 来源:发表于2021-02-01 20:55 被阅读0次

    给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入的位置。

    你可以假设数组中无重复元素。

    示例 1:

    输入: [1,3,5,6], 5
    输出: 2
    示例 2:

    输入: [1,3,5,6], 2
    输出: 1
    示例 3:

    输入: [1,3,5,6], 7
    输出: 4
    示例 4:

    输入: [1,3,5,6], 0
    输出: 0

    思路:
    搜索插入值,与查找指定数字类似,所以用二分法查找
    另外,插入值下标是大于或等于查找值的,所以一定要默认index为size,并且在target小于等于nums[mid]时 给index赋值

    class Solution {
        public int searchInsert(int[] nums, int target) {
            int size = nums.length;
            int l = 0;
            int r = size-1;
            int index = size;
            while(l<=r){
                int mid = (l+r) >> 1;
                if(target <= nums[mid]){
                    r = mid -1;
                    index=mid;
                } else{
                    l = mid +1;
                }
    
            }
        return index;
        }
    }
    

    复杂度分析

    时间复杂度:O(log n)O(logn),其中 nn 为数组的长度。二分查找所需的时间复杂度为 O(log n)O(logn)。
    空间复杂度:O(1)O(1)。我们只需要常数空间存放若干变量。

    偷学至 力扣(LeetCode)

    相关文章

      网友评论

          本文标题:搜索插入位置

          本文链接:https://www.haomeiwen.com/subject/dfmstltx.html