1. 二分查找
条件:有序、查找数量是1个
时间复杂度:O(log2n)=O(logn)
求解过程: 假设循环x次可以查找到目标数,则从优到劣:x=1,…, log2n
第一次排除n/2,第二次排除n/4个…,n/2^x=1 推出
2^x=1 推出
x=log2(n)
应用:剑指offer 53.数字在升序数组中出现的次数(简单,二分查找)
2. 动态规划
利用历史记录,避免重复计算
步骤
- 定义数组元素
- 找数组元素之间的关系式
- 找初始值
条件:有序、查找数量是1个
时间复杂度:O(log2n)=O(logn)
求解过程: 假设循环x次可以查找到目标数,则从优到劣:x=1,…, log2n
第一次排除n/2,第二次排除n/4个…,n/2^x=1 推出
2^x=1 推出
x=log2(n)
应用:剑指offer 53.数字在升序数组中出现的次数(简单,二分查找)
利用历史记录,避免重复计算
步骤