代码随想录算法训练营Day36 | 738.单调递增的数字 968.监控二叉树 总结

代码随想录算法训练营Day36 | 738.单调递增的数字 968.监控二叉树 总结

LeetCode 738.单调递增的数字

题目链接:LeetCode 738.单调递增的数字

思路:
找出非单调递增的数字,标记flag,后面都是9

class Solution {
public:
    int monotoneIncreasingDigits(int n) {
        if(n/10==0) return n;

        int l = n;
        vector<int> s;
        while(l){      
            int k = l % 10; //最后一位;
            s.push_back(k);
            l /= 10; 
        }

        int flag = -1;
        for(int i=1; i<s.size(); i++){
            if(s[i]>s[i-1]){
                flag = i-1;
                s[i] --;
            }
        }

        for(int i=flag; i>=0; i--){
            s[i] = 9;
        }
        int res = 0;

        for(int i=s.size()-1; i>=0; i--){
            res = 10*res + s[i];
        }
        return res;
    }
};

注意 :

  1. flag是i-1,不是i

LeetCode 968.监控二叉树 (待补充)

题目链接:LeetCode 968.监控二叉树

思路:


注意 :
1.
2.
3.
4.

总结

贪心简单题

贪心算法:分发饼干(opens new window)
贪心算法:K次取反后最大化的数组和(opens new window)
贪心算法:柠檬水找零(opens new window)
#贪心中等题
贪心中等题,靠常识可能就有点想不出来了。开始初现贪心算法的难度与巧妙之处。

贪心算法:摆动序列(opens new window)
贪心算法:单调递增的数字(opens new window)

贪心解决股票问题

大家都知道股票系列问题是动规的专长,其实用贪心也可以解决,而且还不止就这两道题目,但这两道比较典型,我就拿来单独说一说

贪心算法:买卖股票的最佳时机II(opens new window)
贪心算法:买卖股票的最佳时机含手续费 (opens new window)本题使用贪心算法比较绕,建议后面学习动态规划章节的时候,理解动规就好

两个维度权衡问题

在出现两个维度相互影响的情况时,两边一起考虑一定会顾此失彼,要先确定一个维度,再确定另一个一个维度。

贪心算法:分发糖果(opens new window)
贪心算法:根据身高重建队列(opens new window)
在讲解本题的过程中,还强调了编程语言的重要性,模拟插队的时候,使用C++中的list(链表)替代了vector(动态数组),效率会高很多。

所以在贪心算法:根据身高重建队列(续集) (opens new window)详细讲解了,为什么用list(链表)更快!

大家也要掌握自己所用的编程语言,理解其内部实现机制,这样才能写出高效的算法!

贪心难题

这里的题目如果没有接触过,其实是很难想到的,甚至接触过,也一时想不出来,所以题目不要做一遍,要多练!

#贪心解决区间问题
关于区间问题,大家应该印象深刻,有一周我们专门讲解的区间问题,各种覆盖各种去重。

贪心算法:跳跃游戏(opens new window)
贪心算法:跳跃游戏II(opens new window)
贪心算法:用最少数量的箭引爆气球(opens new window)
贪心算法:无重叠区间(opens new window)
贪心算法:划分字母区间(opens new window)
贪心算法:合并区间(opens new window)

其他难题

贪心算法:最大子序和 (opens new window)其实是动态规划的题目,但贪心性能更优,很多同学也是第一次发现贪心能比动规更优的题目。

贪心算法:加油站 (opens new window)可能以为是一道模拟题,但就算模拟其实也不简单,需要把while用的很娴熟。但其实是可以使用贪心给时间复杂度降低一个数量级。

最后贪心系列压轴题目贪心算法:我要监控二叉树! (opens new window),不仅贪心的思路不好想,而且需要对二叉树的操作特别娴熟,这就是典型的交叉类难题了。

  • 9
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值