Day33 第八章 贪心算法 part06

一. 学习文章及资料

二. 学习内容

1. 单调递增的数字

(1) 解题思路:

题目要求小于等于N的最大单调递增的整数,那么我们通过识别需要调整的位置,并将后续的数字设置为 9,从而构造出满足条件的最大数字

(2) 解题步骤:

java 复制代码
class Solution {
    public int monotoneIncreasingDigits(int n) {
        String s=String.valueOf(n); // 将整数转换为字符串
        char[] c=s.toCharArray();
        int start=s.length(); // 初始化起始位置
        // 从后往前遍历,找到需要调整的位置
        for(int i=s.length()-2;i>=0;i--){
            if(c[i]>c[i+1]){
                c[i]--; // 当前字符减1
                start=i+1; // 记录后续需要设置为9的起始位置
            }
        }
        // 将起始位置到末尾的字符设置为9
        for(int i=start;i<s.length();i++){
            c[i]='9';
        }
        return Integer.parseInt(String.valueOf(c));
    }
}

2. 监控二叉树

(1) 解题思路:

用于解决"为二叉树安装最少的摄像头,使得所有节点都被监控到"的问题。代码的逻辑是通过递归遍历二叉树,并根据节点的状态(有无覆盖、是否有摄像头)来决定如何放置摄像头。

(2) 解题步骤:

java 复制代码
class Solution {
    int result=0;// 用于记录摄像头的数量
    // 递归函数,返回当前节点的状态
    int traversal(TreeNode cur){
        // 空节点,有覆盖
        if(cur==null) return 2;
        int left=traversal(cur.left);  // 处理左子节点
        int right=traversal(cur.right);// 处理右子节点
        // 情况1:左右子节点都被覆盖(2)
        if(left==2&&right==2) return 0;// 当前节点未被覆盖
        // 情况2:左右子节点至少有一个未被覆盖(0)
        if(left==0||right==0){
            result++;
            return 1;// 安装后返回状态1
        }
        // 情况3:左右子节点至少有一个安装了摄像头(1)
        if(left==1||right==1) return 2; 
        return -1;// 当前节点被覆盖
    }
    public int minCameraCover(TreeNode root) {
        // 处理根节点的情况
        if(traversal(root)==0){
            result++;// 根节点未被覆盖,需要安装摄像头
        }
        return result; // 不会走到这里,代码中的逻辑已经覆盖了所有情况
    }
}

3. 总结

相关推荐
江畔柳前堤8 小时前
大语言模型分布式训练:从并行策略到万卡工程的系统梳理
人工智能·分布式·深度学习·算法·目标检测·机器学习·语言模型
Forever Nore9 小时前
LeetCode 4 寻找两个正序数组的中位数 - 二分
算法·leetcode
罗西的思考11 小时前
【OpenClaw具身硬件】MiniClaw 阅读笔记---(1)基础
人工智能·算法·机器学习
蛋先生DX12 小时前
大模型参数存储格式揭秘:BF不是男朋友
深度学习·算法·llm
爱跳舞的烤冷面12 小时前
自学嵌入式第22天(数据结构——哈希)
数据结构·算法·哈希算法
猎嘤一号12 小时前
博弈论(Game Theory)的理论、算法与工程
人工智能·算法·安全·博弈论
月光船幽幽13 小时前
影子模式下保护 logits 不被修改
人工智能·python·算法
马拉AI13 小时前
腾讯开源 Agent 记忆系统,AI“换对话就忘”的问题有了新解法(附安装使用教程)
人工智能·算法·开源·科研
地平线开发者14 小时前
征程6工具链模型X86推理方式说明
算法
地平线开发者14 小时前
【征程6】校准量化中HistogramObserver解析
算法