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

相关推荐
小O的算法实验室2 分钟前
2025年COR SCI2区,考虑风场影响的无人机搜救覆盖路径规划精确界算法,深度解析+性能实测
算法·无人机·论文复现·智能算法·智能算法改进
xqqxqxxq4 分钟前
洛谷算法1-3 暴力枚举(NOIP经典真题解析)java(持续更新)
java·开发语言·算法
_OP_CHEN5 分钟前
【算法基础篇】(五十五)卡特兰数封神之路:从括号匹配到二叉树构造,组合数学的万能钥匙!
算法·蓝桥杯·c/c++·组合数学·卡特兰数·算法竞赛·acm/icpc
郝学胜-神的一滴8 分钟前
Python美学的三重奏:深入浅出列表、字典与生成器推导式
开发语言·网络·数据结构·windows·python·程序人生·算法
2501_901147838 分钟前
学习笔记:基于摩尔投票法的高性能实现与工程实践
笔记·学习·算法·性能优化
春日见11 分钟前
window wsl环境: autoware有日志,没有rviz界面/ autoware起不来
linux·人工智能·算法·机器学习·自动驾驶
rainbow688914 分钟前
PCL点云处理算法全解析
算法
代码无bug抓狂人19 分钟前
C语言之可分解的正整数(蓝桥杯省B)
c语言·开发语言·算法
量子-Alex20 分钟前
【大模型技术报告】Seed-Thinking-v1.5深度解读
人工智能·算法
Anastasiozzzz35 分钟前
对抗大文件上传---分片加多重Hash判重
服务器·后端·算法·哈希算法