算法萌新闯力扣:搜索插入位置

60 阅读2分钟

    力扣热题:搜索插入位置

开篇

 对于想要学会二分查找的算法萌新来说,这道题是非常友好的学习题目,完完全全按照二分查找模版就可以完成。大伙儿还不赶紧练起来!

题目链接:35.搜索插入位置

题目描述

在这里插入图片描述

代码思路

这道题时完完全全的二分查找问题,模版一套,潇洒提交

知识点:二分查找

二分查找是将数组/顺序表等分解为3个查找区间:前后两个区间的规模大致相等,中间区间长度为1. (1)if (待查记录的关键字k1 == 中间区间记录的关键字k2),则查找成功。(2)else if (k1 < k2),说明待查记录只可能在前半区,则在前半区应用相同策略继续查找; (3)else,说明待查记录只可能在后半区,则在后半区应用相同策略继续查找; 不断缩小前半区或者后半区,并且继续查找的过程符合分治法的特征: (1)区间长度 <= 1时,要么查找成功,要么失败。 (2)区间长度 > 1时,分解为3个子问题,这些子问题与原问题具有相同特征。 (3)比较特殊的是:折半查找的解要么是其中一个子问题的解,要么无解,所以无需进行子解的组合。

代码逐行解析版

class Solution {
    public int searchInsert(int[] nums, int target) {
        int mid;
        int low = 0,high = nums.length - 1;//双指针,low和high分别位于数组两侧
        while(low <= high){
            mid = (low + high) / 2; //去中间值
            //下面是三种情况,相等时直接返回,大于或小于时则收缩搜查范围
            if(nums[mid] == target) return mid; 
            else if(nums[mid] > target) high = mid - 1;
            else low = mid + 1;
        }
        return low;
    }
}

结语

 通过这道简单题,相信大家对二分查找有一定的了解,可以尝试吧这个模版背起来,以后遇到就可以套上去。一键关注孤舟一叶_,每天给大家带来力扣题的分析,一起提升算法水平。