二分算法的入门笔记

二分查找

  1. 使用前提:有序。
  2. 可理解为枚举的一种技巧。
  3. 时间复杂度: l o g ( n ) log(n) log(n)

基础模版代码

  • 使用时根据情景进行相应的变化。
  • 注意跳出条件and分支处理方式and返回答案,三者之间的配合,不要进入死循环。
  • 可以在模拟一下最后得到答案时的运行情况来判断。
int bs(int a[],int n,int tg)
{
    int l=0,r=n-1;
    while(l<=r){
        int mid=(l+r)/2;
        if(a[mid]==tg) return mid;
        else if(a[mid]>tg) r=mid-1;
        else l=mid+1;
    }
    return -1;
}

常见题型

求最值

最小化最大值

  1. 有多个分段,通过移除操作,得到一个最小的分段最大值。

最大化最小值

  1. 有多个分段,通过移除操作,得到一个最大的分段最小值。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值