《面试笔试算法上》-二分专题

《面试笔试算法上》-二分专题

  1. 大统领投票(排序):结构体(字符串、编号)排序(const node &a)
  2. 吃瓜群众:结构体排序+朴素二分(1. while(l < r) 2. mid 3. 判等 4. 小于or大于);细节(int mid = ((long long)l + r)
  3. 吃瓜群众升级:特殊二分(00001111情况,套路:1. while (l != r)2. mid = (l + r) / 23. if (t <= f[mid]) r = mid 4. l = mid + 1);瓜节点(最大瓜,超int);
  4. ☆ 暴躁的程序员(最近的程序猿最大距离):二分答案;模式(最大的最小的;最小的最大的);解题思路(1. 答案的边界值 2.判断0011还是1100 3. 关键函数(根据答案ans得判断依据cond));对于111000的套路是(1.while (l != r) 2.mid = (l + r + 1) / 2 3.if (func(ans_mid) >= cond) l = mid 4.r = mid - 1 );代码(int n ,m;定义在全局区,对于函数中也可以直接使用)
  5. ☆ 切绳子(小数二分):浮点数的步骤(1.while (r - l > EPSLON) 2.double mid = (l + r) / 2 3.if () l = mid 4.r = mid);注意:if();l = mid, r = mid条件判断的大于小于号要符合实际要求;直接舍弃小数点后两位的小数(printf("%.2f", (int)(l * 100) / 100.0));替代floor函数,double / double 给到int中
  6. leetcode-278:第一个错误版本:leetcode刷题环境;int mid = ((long long)l + r) / 2;(防止整型溢出)
    参考文献
    2.二分专题
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值