
蓝桥杯学习记录(4)——基础算法
时间复杂度
时间复杂度一般关注的是最坏时间复杂度,用O(f(n))表示,
而时间复杂度中如果同时存在多项,仅考虑最高项
例如,如果基本操作执行次数是3n^2 + 2n + 1,那么时间复杂度就是O(n^2)

枚举
模拟
递归
进制转换
前缀和
差分
离散化
贪心
双指针
二分
二分法
定义:每次将搜索范围缩小一半,可以在O(logn)时间复杂度内找到正确答案。
使用二分法的前提条件:单调性
思路:通过利用单调性不断缩小二分查找的区间,来逼近目标值。
二分法步骤:
- 候选区间
[left,right] - 不断循环,直至区间满足特定条件
- 计算中点
mid = (left+right)/2 - 判断中点是否合法,根据中点的计算结果调整
[left,right],例如,如果mid比目标值大,则将区间调整为[left,mid];而如果mid比目标值小,则调整区间为[mid,right];如果mid与目标值相等,则输出mid
- 计算中点
浮点二分
具体二分数学运算过程如下图:

代码实现:
1 | left,right = 1,2 |
二分答案
题目所求答案(一般为整数) 具有单调性质,采用猜答案+二分
- 确定初始范围[left,right]
- 当left < right时:
- mid = (left + right)//2
- check(mid):断mid是否合法:(定义check函数,什么时候是合法,根据题目的单调性来确定)
- 如果合法:更新ans=mid
- 根据合法调整左右区间,调整策略为二选一: left =mid + 1
1 | #二分答案 |
倍增
倍增算法是一种优化算法,通常应用于某些需要高效计算指数幂的场景。它基于分治的思想,通过反复求平方来实现快速计算指数幂的目的。在实际应用中,倍增算法经常用于解决最近公共祖先问题、二分查找等。
构造
位运算
- 标题: 蓝桥杯学习记录(4)——基础算法
- 作者: 狮子阿儒
- 创建于 : 2024-03-03 10:39:35
- 更新于 : 2024-03-24 13:04:21
- 链接: https://c200108.github.io/blog/2024/03/03/蓝桥杯学习记录(4)——基础算法/
- 版权声明: 本文章采用 CC BY-NC-SA 4.0 进行许可。
评论