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)

相关推荐
浪浪小洋4 分钟前
c++ qt课设定制
开发语言·c++
charlie11451419113 分钟前
嵌入式C++工程实践第16篇:第四次重构 —— LED模板,从通用GPIO到专用抽象
c语言·开发语言·c++·驱动开发·嵌入式硬件·重构
handler0118 分钟前
Linux: 基本指令知识点(2)
linux·服务器·c语言·c++·笔记·学习
故事和你9119 分钟前
洛谷-数据结构1-4-图的基本应用1
开发语言·数据结构·算法·深度优先·动态规划·图论
我叫黑大帅29 分钟前
为什么map查找时间复杂度是O(1)?
后端·算法·面试
炽烈小老头1 小时前
【每天学习一点算法 2026/04/20】除自身以外数组的乘积
学习·算法
skilllite作者1 小时前
AI agent 的 Assistant Auto LLM Routing 规划的思考
网络·人工智能·算法·rust·openclaw·agentskills
破浪前行·吴2 小时前
数据结构概述
数据结构·学习
香蕉鼠片2 小时前
MFC是什么
c++·mfc
心态与习惯3 小时前
Julia 初探,及与 C++,Java,Python 的比较
java·c++·python·julia·比较