Day37 贪心算法 part06 738. 单调递增的数字 968. 监控二叉树

贪心算法 part06 738. 单调递增的数字 968. 监控二叉树

738. 单调递增的数字

c 复制代码
class Solution {
public:
    int monotoneIncreasingDigits(int n) {
        string strNum = to_string(n);
        int tag = strNum.size();
        for(int i = strNum.size()-1; i>=1; i--){
            if(strNum[i]<strNum[i-1]){ //不是递增情况,后一位修改成9,前一位-1
                tag =i;
                strNum[i] = '9';
                strNum[i-1]--;
            }
        }
        for(int i = tag; i<strNum.size();i++){ //如果时100的情况,这要有一个标记 否则就是90的错误输出
            strNum[i] = '9';
        }
        return stoi(strNum);
    }
};

968. 监控二叉树

建议二刷巩固

c 复制代码
class Solution { //0:无覆盖 1:有摄像头 2:有覆盖
    int result;
    int traversal(TreeNode* cur) { 
    if (cur == nullptr) return 2; // 空节点,该节点有覆盖,方便叶子节点取值
    int left = traversal(cur->left);    // 左
    int right = traversal(cur->right);  // 右
    // 中
    if (left == 2 && right == 2) return 0; //左右节点有覆盖,表示此节点应该为无覆盖
    if (left == 0 || right == 0) { //一旦叶子节点无覆盖,该处添加摄像头
            result++;
            return 1;
    }
    if (left == 1 || right == 1) return 2;  //叶子节点有摄像头,此节点状态为覆盖状态          
    return -1;
    }
public:
    int minCameraCover(TreeNode* root) {
        result = 0;
        if (traversal(root) == 0) { // root 无覆盖,非常难想到的特殊情况
            result++;
        }
        return result;
    }
};
相关推荐
Jerry2 小时前
LeetCode 28. 找出字符串中第一个匹配项的下标
算法
Jerry4 小时前
LeetCode 459. 重复的子字符串
算法
哥不想学算法6 小时前
【C++】字符串字面量拼接
开发语言·c++
海石6 小时前
1500分的题目,确实有实力,不过还是我略胜一筹
算法·leetcode
海石6 小时前
【记忆化搜索】条条大路通AC,走好适合你的那一条,走到后再考虑走得快
算法·leetcode
Jerry8 小时前
LeetCode 151. 反转字符串中的单词
算法
gugucoding9 小时前
31. 【C语言】堆栈与队列的实现
c语言·开发语言·数据结构·链表
ChaoZiLL10 小时前
我的数据结构3——链表(link list)
数据结构·链表
a11177611 小时前
LM 算法迭代过程动画演示(SLAM)
算法
头茬韭菜11 小时前
Context 的生死抉择:四层压缩、截断算法与 Session Memory
算法·ai