27. 738.单调递增的数字,968.监控二叉树,贪心算法总结

cpp 复制代码
class Solution {
public:
    int monotoneIncreasingDigits(int n) {
        string strNum = to_string(n);
        // flag用来标记赋值9从哪里开始
        // 设置为这个默认值,为了防止第二个for循环在flag没有被赋值的情况下执行
        int flag = strNum.size();

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

        for(int i = flag; i < strNum.size(); i++) strNum[i] = '9';
        return stoi(strNum);
    }
};
cpp 复制代码
//定义: 0:该节点无覆盖 1:本节点有摄像头 2:本节点有覆盖!!!
class Solution {
public:
    int minCameraCover(TreeNode* root) {
        int cnt = 0;
        if(traversal(root, cnt) == 0) cnt++; //注意还需要判断根节点是否有覆盖!!!
        return cnt;
    }

    int traversal(TreeNode* root, int& cnt){
        if(root == nullptr) return 2;

        int left = traversal(root->left, cnt);
        int right = traversal(root->right, cnt);

        if(left == 0 || right == 0) {cnt++; return 1;}
        else if(left == 1 || right == 1) return 2;
        else return 0;

        // 以下是错误的逻辑!!!
        // if(left == 1 || right == 1) return 2;
        // else if(left ==2 && right ==2) return 0;
        // else {cnt++; return 1;}
    }
};

贪心算法总结

代码随想录 (programmercarl.com)

相关推荐
小小仙子5 分钟前
矢量网络分析仪如何测试S参数的?
人工智能·算法·机器学习
code bean1 小时前
【C#】 `Channel<T>` 深度解析:生产者-消费者模式的现代解法
数据结构·c#
中微极客2 小时前
降维算法75倍加速:从PCA到稀疏字典学习的工程实践
人工智能·学习·算法
storyseek2 小时前
前缀和实现Kogge-Stone算法
数据结构·算法
ziguo11222 小时前
深入浅出 C/C++ 数据类型:从入门到踩坑
linux·c语言·c++·windows·visual studio
元Y亨H2 小时前
开发者必须掌握的十大核心算法
算法
元Y亨H3 小时前
深度解构:数据结构与算法的理论基石与工程演进
数据结构·算法
白色冰激凌3 小时前
[SECS/GEM研究] (三)SECS-I 串口上消息怎么分块和重传
c++·secs/gem
元Y亨H3 小时前
数据结构与算法的通俗指南
数据结构·算法
光头闪亮亮3 小时前
Fyne ( go跨平台GUI )项目实战-项目开发必备基础知识(中)
android·c++·go