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

核心思路

  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  ZealousMclaren  阅读(7)  评论(0)    收藏  举报