七七老师の白日梦
首页项目归档照片墙音乐灵境说说杂谈友链关于
封面

搜索输入位置:二分递归

写作时间:2026-08-20 08:30:51

题目

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

请必须使用时间复杂度为 O(log n) 的算法。

链接

35. 搜索插入位置

思考

这道题目很容易想到思路,暴力法非常简单

class Solution {
    public int searchInsert(int[] nums, int target) {
        for (int i = 0;i < nums.length;i++) {
            if (nums[i] == target) return i;
            if (nums[i] >= target) return i;
        }
        return nums.length;
    }
}

就是遍历查找,但是依题目要求,我们需要的时间复杂度不对,需要降,那我们何不试试二分法

class Solution {
    public int searchInsert(int[] nums, int target) {
        return binaryInsert(nums, nums.length - 1, 0,target);
    }

    private int binaryInsert(int[] nums,int right,int left,int target) {
        if (right < left) return left;

        int mid = left + (right - left) / 2;

        if (nums[mid] == target) {
            return mid;
        } else if (nums[mid] > target) {
            return binaryInsert(nums,mid - 1,left,target);
        } else {
            return binaryInsert(nums, right, mid + 1, target);
        }
    }
}

‍

avatar

七七老师

分享代码日常

RECOMMENDED

七七旧事:复盘并改变写博客的方式

2026-07-02 22:54:38

字母异位词

2026-07-04 22:22:08

寻找两个正序数组的中位数:合并与二分

2026-07-08 15:56:26

Table of Contents