贪心算法

贪心算法:

  • 特点:

    • 从局部最优,从而达到全局最优
    • 将一个问题进行分解为子问题,由子问题最佳得到全局最佳【关键在于怎么分解】;
    • 分解:
      • 横向分解:分解为不同的情况,分别进行考虑,最优情况往往取决于部分情况;
      • 纵向分解:分为不同的步骤,保证当前步骤的最优情况;
  • 经典题型:

    • 简单题型:

      • 分发饼干,柠檬睡找零类似,确定一个最优解的方向;
      • 分发糖果【两个维度】:将相对关系分解为:左相关 && 右相关,同时成立;
      • 数组经过k次反转:分解负数 0 正数,最后对k和最小值进行操作;
    • 中等题型:

      • 序列问题:

        • 摆动序列:分解为三个过程,平上,平下,平平;
        • 单调递增的数字:对数字,存在两个方向的遍历,同时还得归纳总结出推导公式;
      • 股票问题:最优是动态规划,局部最优:收集每天的正利润,全局最优:求得最大利润。

      • 两个维度问题:确定一个维度,判断另一个【局部和全局】;

        • 身高重建队列
      • 区间问题:区间=》范围问题【属于两个维度问题】;

        • 跳跃游戏I:范围问题;

        • 跳跃游戏II:在过程上有约束;

        • 弓箭引爆气球:求区间之间的交集【使用min】;

        • 划分字母区间:将字符映射为区间,统计每个字符最后出现的位置,然后就可以得到区间,然后跳跃游戏II的逻辑思路,统计已经遍历过的最大位置和当前位置的关系;

          基本:先聚类为区间问题,然后区间求并,求差集

    • 有点难度:

      • 加油站:对于出发点的判断【更偏向模拟题】
      • 监控二叉树:极端条件的判断【优先叶子节点的父节点】
posted @ 2025-07-31 15:37  烟雨断桥  阅读(2)  评论(0)    收藏  举报