二分查找——搜索插入位置

核心思路

  1. 二分查找:每次把查找范围缩小一半,所以时间复杂度O(log n)
  2. 指针定义:
  • left:区间左边界
  • right:区间有边界
  • mid:中间位置
  1. 三种情况:
  • nums[mid] == target → 找到,直接返回 mid
  • nums[mid] < target → 目标在右边 → left = mid + 1
  • nums[mid] > target → 目标在左边 → right = mid - 1
  1. 退出循环时:left > right,此时 left 就是应该插入的位置

总结

  • 这是最标准、最简洁的 Java 二分查找解法
  • 时间复杂度 O(log n),空间复杂度 O(1)
  • 适用于 LeetCode 35 题:搜索插入位置

Java代码实现如下:

class Solution {

public int searchInsert(int[] nums, int target) {
    // 左右指针
    int left = 0;
    int right = nums.length - 1;

    while (left <= right) {
        // 求中间索引(防止溢出写法)
        int mid = left + (right - left) / 2;

        if (nums[mid] == target) {
            // 找到目标,直接返回索引
            return mid;
        } else if (nums[mid] < target) {
            // 目标在右侧,左指针右移
            left = mid + 1;
        } else {
            // 目标在左侧,右指针左移
            right = mid - 1;
        }
    }

    // 循环结束没找到,left 就是插入位置
    return left;
}

}

posted @ 2026-04-28 16:19  AlexXuu  阅读(1)  评论(0)    收藏  举报