LeetCode第35题搜索插入位置

继续打卡算法题,今天学习的是LeetCode的第35题搜索插入位置,这道题目是道简单题。算法题的一些解题思路和技巧真的非常巧妙,每天看一看算法题和解题思路,我相信对我们的编码思维和编码能力有一些提升。

分析一波题目

这个题目目的是为了搜索有序数组中的数,我们提高效率需要使用到二分法查找。

什么时候搜索结束呢?

比如在下面数组中搜索5,第一次中间数是4,比5小,那么下次需要往右边找

其实只会有两种情况,第一,目标数存在数组中,直接返回

第二,目标数不在数组中,此时我们需要找到第一个大于target的数

编码解决

java 复制代码
class Solution {
    public int searchInsert(int[] nums, int target) {

        int start = 0;
        int end = nums.length-1;
        int mid = 0;
        int result = nums.length; //默认最后插入位置
        while(start <= end) {

            mid = (end - start) / 2 + start;
            
            //刚好相等
            if(nums[mid] == target) {
                return mid;
            }
            //在右边
            if(nums[mid] < target) { 
                start = mid+1;
            } else { //在左边 大于target了,需要记录下来
                 end = mid-1;
                 result = mid; //最右边的插入位置
            }
        }
       return result;

    }
}

总结

二分法搜索法写法有两个点需要注意,一个是while条件,一个是更新left和right值。

while条件如果是start<=end, 更新条件需要使用start=mid+1或者end=mid-1

相关推荐
葫芦和十三5 小时前
图解 MongoDB 02|BSON:你以为存的是 JSON,其实是带类型的二进制
后端·mongodb·agent
葫芦和十三5 小时前
图解 MongoDB 01|文档数据库
后端·mongodb·agent
JieE2126 小时前
LeetCode 56. 合并区间|超清晰 JS 图解思路,面试高频区间题
javascript·算法·面试
陈随易7 小时前
VSCode的Copilot扩展支持接入DeepSeek,Kimi了!
前端·后端·程序员
我不是外星人9 小时前
有了 Harness Engineering ,真的还需要研发工程师吗?
前端·后端·ai编程
candyTong9 小时前
RTK 技术原理:一次典型会话里,80% 上下文是怎么省下来的
javascript·后端·架构
Rust研习社11 小时前
组合真的优于继承吗?为什么 Rust 和 Go 都拥抱组合舍弃继承?
后端·rust·编程语言
IT_陈寒11 小时前
JavaScript的闭包把我坑惨了,说好的内存会自动回收呢?
前端·人工智能·后端
CaffeinePro12 小时前
Pydantic深度使用:数据校验、枚举、ORM映射
后端·fastapi
Chenyiax13 小时前
从 Chat 到 Responses:OpenAI API 抽象为什么变了?
后端