LeetCode:35.搜索插入位置之你真的会二分吗?

35. 搜索插入位置 - 力扣(LeetCode)

博主在这个题是栽了一下,领悟了些许东西

目录

题目:

思路: 

大佬的思考(超级重要!!):

代码+注释:

每日表情包:


题目:

LeetCode:35.搜索插入位置之你真的会二分吗?_第1张图片

思路: 

很容易想到,也算是只能用二分,

多了没找到的情况分析,易想到,没找到,也肯定能找到这个元素最接近的位置(毕竟你已经排去了很多元素,有下标,left,right,和mid),要思考的只是返回值用什么,

当然还有进阶!,当有多个目标元素,或者目标元素的上一个或下一个数是多个的(重复的)又该如何?

大佬的思考(超级重要!!):

建议不会的被虐一遍再看

力扣(LeetCode)官网 - 全球极客挚爱的技术成长平台

代码+注释:

int searchInsert(int* nums, int numsSize, int target) {
    //二分,这下博主终于有点印象了
    int l = 0, r = numsSize - 1;
    while(l <= r){
        int mid = l + (r - l) / 2;
        //刚开始我写(r + l) / 2 并没发现有啥区别 仔细一想是有可能超上限
        //还见到有人写>> 1,因为是二进制很容易知道>>可以代替除2,至于什么好处,暂且不清楚
        if(nums[mid] >= target){
            //可以根据大佬https://leetcode.cn/problems/search-insert-position/solutions/333632/sou-suo-cha-ru-wei-zhi-by-leetcode-solution/comments/496785
            //的思考,来分析一下,把等号归入r这里的原因,和归入l的区别
            r = mid - 1;
        }
        else{
            l = mid + 1;
        }
    }
    return l;
}

每日表情包:

LeetCode:35.搜索插入位置之你真的会二分吗?_第2张图片

你可能感兴趣的:(leetcode,算法,c语言,数据结构)