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)

相关推荐
Lzg_na15 分钟前
堆和堆排序
算法
TK泰妞22 分钟前
TikTok 带货视频如何做多语言本地化?从翻译脚本到重做场景的实用方法
算法·音视频
房开民25 分钟前
DDPM 完整原理 + 全套公式串联
算法
lunar_coder29 分钟前
哈希扩展 -- 位图思想
c++·算法·哈希算法
秋天的怀念_David39 分钟前
听故事学语言 · 数据结构篇 · 序章一 算法之问
数据结构·程序人生·算法
LG.YDX43 分钟前
基于中心的3D目标检测和探索追踪-笔记
笔记·算法·目标检测
民乐团扒谱机1 小时前
【读论文】音色在微分音程记忆中的作用
人工智能·深度学习·算法
Navigator_Z1 小时前
LeetCode //C - 1306. Jump Game III
c语言·算法·leetcode
小O的算法实验室1 小时前
IEEE TASE,面向无人机的不确定性感知信息路径规划:可解释贝叶斯强化学习方法
算法
L0208241 小时前
Kubernetes Service 与 kube‑proxy 深度详解
运维·算法·云原生·容器·贪心算法·kubernetes