首页 > 其他分享 >二分专题。。。

二分专题。。。

时间:2023-11-30 18:36:52浏览次数:24  
标签:二分 专题 int mid long 查找 大于

不是什么牛逼的二分,就是普通的二分
谁知道我都学到了这种程度,还能连二分都不会。。。
难绷啊

1.在一个序列里面二分查找第一个大于x的数字

// 在[i+1, n-1]的范围内查找第一个大于x的数的位置
int bingarySearch(int i, long long x){
    if(a[n-1] <= x) return n; //都不大于x,返回n
    int l = i + 1,r = n - 1;
    while (l<r)
    {
        mid = (l+r)/2;
        // 若a[mid]<=x, 说明第一个大于x的数只可能在mid后面
        if(a[mid]<=x){
            l = mid + 1;
        }else{// 若大于,说明在mid之前(包含mid)
            r = mid;
        }
    }
    return l;
}
//摘自https://blog.csdn.net/Cainell/article/details/122485622,感谢大佬!

2.在一个序列里面二分查找第一个大于等于x的数字

// 在[i+1, n-1]的范围内查找第一个大于x的数的位置
int bingarySearch(int i, long long x){
    if(a[n-1] <= x) return n; //都不大于x,返回n
    int l = i + 1,r = n - 1;
    while (l<r)
    {
        mid = (l+r)/2;
        // 若a[mid]<=x, 说明第一个大于x的数只可能在mid后面
        if(a[mid]<x){
            l = mid + 1;
        }else{// 若大于,说明在mid之前(包含mid)
            r = mid;
        }
    }
    return l;
}
//摘自https://blog.csdn.net/Cainell/article/details/122485622,感谢大佬

3.查找最后一个小于等于的数字

int l=0,r=max;
while (l < r) {
    //取高位,取地位会遇见死循环
    int mid=(l+r+1)/2;
    if(k>=dp[mid])l=mid;
    else r=mid-1;
}
return l;

4.查找最后一个小于的数字

int l=0,r=max;
while (l < r) {
    //取高位,取地位会遇见死循环
    int mid=(l+r+1)/2;
    if(k>dp[mid])l=mid;
    else r=mid-1;
}
return l;

我的选择是,背下来

 

标签:二分,专题,int,mid,long,查找,大于
From: https://www.cnblogs.com/HLZZPawa/p/17867976.html

相关文章

  • 【专题】从新能源车险看财险经营模式变革报告PDF合集分享(附原数据表)
    原文链接:https://tecdat.cn/?p=34418原文出处:拓端数据部落公众号报告合集对中国新能源汽车市场的发展机遇、当前行业状况及未来趋势进行了详细分析。同时,从专业角度分享了海外市场的前沿经验以及中国新能源汽车生态的案例。报告合集总结指出,新能源汽车专属车险的发展和完善不仅......
  • 【专题】2022年中国跨境电商行业研究报告PDF合集分享(附原数据表)
    报告链接:http://tecdat.cn/?p=32044近年来,我国的跨境电子商务发展迅速,在过去五年中,其贸易额增长率达到了16.2%,已经成为稳定对外贸易的一支重要力量。阅读原文,获取专题报告合集全文,解锁文末52份跨境电商行业相关报告。一方面,随着跨境电子商务的发展,跨境电子商务的监管政策得到了......
  • 牛顿法、割线法、二分法
    1clear;clc;2%%牛顿法3f=@(x)x^4-4*x^2+4;%函数4df=@(x)4*x^3-8*x;%一阶导数5ddf=@(x)12*x^2-8;%二阶导数6N=1000;%最大迭代次数7x=zeros(N,1);%储存迭代点8x(1)=log(8);%初始点9eps=0.00001;%容许误差1011%迭代过程12fork=2:1:N13x(k)......
  • 【专题】2022汽车品牌影响力研究报告PDF合集分享(附原数据表)
    原文链接:https://tecdat.cn/?p=34404原文出处:拓端数据部落公众号近年来,汽车市场中的品牌销量排名发生了巨大的变化,形成了比亚迪和大众两大巨头。比亚迪在中国品牌中的销量增长迅速,特别是在新能源领域,引领着中国品牌的快速增长。豪华品牌方面,形成了一个由BBA和特斯拉组成的新一......
  • day1数组理论基础,704. 二分查找,27. 移除元素
    数组理论基础,704.二分查找,27.移除元素1数组理论基础1.1数组概念定义:存放在连续内存空间上的相同类型数据的集合。特点:1.数组中数据类型相同2.数组所占空间连续1.2数组创建2704.二分查找给定一个n个元素有序的(升序)整型数组nums和一个目标值target,写一个函数......
  • 《力扣面试150题》题单拓展——二分法
    《力扣面试150题》题单拓展——二分法困难题:找第K大/小1.基础知识首先可以确定答案的上下界单调性分析:如果当前答案为m时,可以满足,一定有一侧是一定满足的,另一侧不一定,需要去探索boolis_ok(){}intl,r;intans;while(l<=r){intm=l+((r-l)>>1);......
  • 代码随想录算法训练营第一天| 704. 二分查找、27. 移除元素
    LeetCode704二分查找题目链接:LeetCode704左闭右闭:视频讲解:手把手带你撕出正确的二分法思路:在循环条件中注明left<=right,即[left,right]classSolution{public:intsearch(vector<int>&nums,inttarget){intleft=0,right=nums.size()-1......
  • 卡特兰数专题(Catalan)
    卡特兰数专题(\(Catalan\))一、什么是卡特兰数?明安图数,又称卡塔兰数,英文名\(Catalan\)\(number\),是组合数学中一个常出现于各种计数问题中的数列。以中国蒙古族数学家明安图\((1692-1763)\)和比利时的数学家欧仁·查理·卡塔兰\((1814–1894)\)的名字来命名,其前几项为(从第零项开......
  • 【专题】2023社群电商爆品营销白皮书报告PDF合集分享(附原数据表)
    原文链接:https://tecdat.cn/?p=34389原文出处:拓端数据部落公众号2023年是全球电商市场复苏的一年,也是充满机遇和激烈竞争的一年。对于出海电商品牌来说,在避免"内卷"的同时,寻找创新和可持续的经营策略和营销方法将变得至关重要。在新的出海环境下,由于其品效兼备的价值,"爆品"将展......
  • 三道函数小题:判断是否是闰年、是否是素数和二分查找
    一、用函数打印100-200之间的素数#include<stdio.h>intis_prime(inti){intn=0;for(n=2;n<i;n++){if(n%i==0)return0;}return1;}intmain(){inti=0;for(i=100;i<=200;i++){if(is_prime(i)==1);printf("%d"......