贪心算法
贪心算法:
-
特点:
- 从局部最优,从而达到全局最优
- 将一个问题进行分解为子问题,由子问题最佳得到全局最佳【关键在于怎么分解】;
- 分解:
- 横向分解:分解为不同的情况,分别进行考虑,最优情况往往取决于部分情况;
- 纵向分解:分为不同的步骤,保证当前步骤的最优情况;
-
经典题型:
-
简单题型:
- 分发饼干,柠檬睡找零类似,确定一个最优解的方向;
- 分发糖果【两个维度】:将相对关系分解为:左相关 && 右相关,同时成立;
- 数组经过k次反转:分解负数 0 正数,最后对k和最小值进行操作;
-
中等题型:
-
序列问题:
- 摆动序列:分解为三个过程,平上,平下,平平;
- 单调递增的数字:对数字,存在两个方向的遍历,同时还得归纳总结出推导公式;
-
股票问题:最优是动态规划,局部最优:收集每天的正利润,全局最优:求得最大利润。
-
两个维度问题:确定一个维度,判断另一个【局部和全局】;
- 身高重建队列
-
区间问题:区间=》范围问题【属于两个维度问题】;
-
跳跃游戏I:范围问题;
-
跳跃游戏II:在过程上有约束;
-
弓箭引爆气球:求区间之间的交集【使用min】;
-
划分字母区间:将字符映射为区间,统计每个字符最后出现的位置,然后就可以得到区间,然后跳跃游戏II的逻辑思路,统计已经遍历过的最大位置和当前位置的关系;
基本:先聚类为区间问题,然后区间求并,求差集
-
-
-
有点难度:
- 加油站:对于出发点的判断【更偏向模拟题】
- 监控二叉树:极端条件的判断【优先叶子节点的父节点】
-

浙公网安备 33010602011771号