35.搜索插入位置

题目描述

题目描述

题解(二分查找)

思路

思路

代码

java 复制代码
class Solution {
    public int searchInsert(int[] nums, int target) {
        int left = 0;
        int right = nums.length - 1;
        
        // 当 left <= right 时,搜索区间是有效的
        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;
    }
}

复杂度分析

  • 时间复杂度:O(log⁡n)O(\log n)O(logn)。每次循环将搜索范围缩小一半,完全符合题目要求
  • 空间复杂度:O(1)O(1)O(1)。只使用了几个额外的变量 left、right 和 mid,不需要额外的存储空间
相关推荐
偏爱自由 !1 小时前
8. 泛型程序设计
java·开发语言·windows
海兰1 小时前
【SpringBoot 】AOP企业级权限控制方案(二)
android·java·spring boot
偏爱自由 !1 小时前
2:IDEA中git的使用--基础操作
java·git·intellij-idea
ch.ju1 小时前
Java Programming Chapter 4——Class loading
java·开发语言
LiaoWL1231 小时前
【SpringBoot合集-03】Spring Boot 启动过程学习
java·spring boot·学习
闪电悠米1 小时前
力扣hot100-438.找到字符串中所有字母异位词-固定长度滑动窗口详解
linux·服务器·数据结构·算法·leetcode·滑动窗口·力扣hot100
人道领域1 小时前
【LeetCode刷题日记】51.N皇后
数据结构·算法
孟浩浩3 小时前
JAVA SpringAI+阿里云百炼应用开发
java·开发语言·阿里云
钱多多_qdd3 小时前
ListUtil#split和remove搭配使用的坑
java