军队 网站备案,建设银行商城网站,中国建设银行的官方网址,科技与狠活是什么梗文章目录 1.朴素二分查找的升级版2.查找左端点3.查找右端点4.代码的编写 1.朴素二分查找的升级版
和之前介绍的这个二分查找相比#xff0c;我觉得这个区别就是我们的这个二分查找需要找到的是一个区间#xff0c;而不是这个区间里面的某一个元素的位置#xff1b;
2.查找… 文章目录 1.朴素二分查找的升级版2.查找左端点3.查找右端点4.代码的编写 1.朴素二分查找的升级版
和之前介绍的这个二分查找相比我觉得这个区别就是我们的这个二分查找需要找到的是一个区间而不是这个区间里面的某一个元素的位置
2.查找左端点
1首先就是我们的这个循环的条件leftright; 2其次就是我们的判断的这个语句 xt这个t就是我们的target目标值这个时候和我们的朴素二分一样就是让这个leftmid1; 但是当这个xt的时候我们不再是让这个rightmid-1了而是让这个rightmid因为这个时候是判断的区间所以这个mid可能就是我们想要的这个数值 3之前我们确定这个mid的时候是这个1或者是不1都是可以的因为当是偶数的时候两个情况下对应的这个数值都失败可以帮助我们判断的 但是在这个里面我们的终点求解的时候就应该是这个不加1的版本才可以 3.查找右端点
1这个和上面的恰好是反过来的无论是这个终点的求解还是这个判断和位置的变换都是和上面的放过来 上面的取等号的我们下面的查找右端点就不用取等号反之如果上面没取我们这个就需要进行相等情况下的判断 2其次就是这个里面的终点元素的判断 left(right-left1)/2和上面的也是不同的上面的是不要1的 4.代码的编写
1首先定义一个数组里面的两个元素都是-1这个处理的就是我们的这个示例里面的第三种情况 2下面就是分别去查找我们的左端点和右端点按照上面介绍的这个思路即可 3左端点 leftright作为循环的条件 mid求解的时候不需要1的操作 xtarget对应的就是我们的leftmid1; xtarget对应的就是我们的midright; return的时候其实这个left和right指向的就是一个位置因此当我们往数组里面搁置的时候left和right都是可以的
4下面的这个是右端点的判断的逻辑代码 leftright作为我们的判断的条件 mid求解的时候需要加上1 xtarget对应的这个leftmid xtarget的时候,rightmid减去一 这个找到端点之后直接把这个下标放到我们的ret数组里面的第二个元素的位置即可