day37 贪心算法part6

738. 单调递增的数字

中等

提示

当且仅当每个相邻位数上的数字 x 和 y 满足 x <= y 时,我们称这个整数是单调递增的。

给定一个整数 n ,返回 小于或等于 n 的最大数字,且数字呈 单调递增 。

不知道怎么讲思路......以9287举例,从后往前遍历,87肯定不是递增的,那么是递增又满足小于87的最大数应该是79,然后变成9279,轮到27不满足,变成19,现在是9119,现在91不满足,变成89,最后满足的是8999。总之就是前一位减一,后一位变9.

难点:如何提取到每一位的数字并方便修改?最好把每一位拿下来,放到一个数组里,方便修改。

java 复制代码
class Solution {
    public int monotoneIncreasingDigits(int n) {
        String s = String.valueOf(n); //装箱
        char[] chars = s.toCharArray();

        // flag用来标记赋值9从哪里开始
        // 设置为这个默认值,为了防止第二个for循环在flag没有被赋值的情况下执行
        int flag = chars.length;

        for (int i = chars.length - 1; i > 0; i--) { // 后往前遍历
            if ( chars[i] < chars[i - 1]) {
                chars[i - 1]--;
                // 标记不递增的地方是从哪里开始的,在那之后的都要变成9
                // 比如 93232,会被改为 89999, 100,会被改为99
                flag = i; 
            }
        }
        // 省略了下面这个不行,遇到100这种,过不去
        for (int i = flag; i < chars.length; i++){
            chars[i] = '9';
        }
        return Integer.parseInt(new String(chars)); // 或者 Integer.parseInt(String.valueOf(chars))
    }
}

968. 监控二叉树

困难

给定一个二叉树,我们在树的节点上安装摄像头。

节点上的每个摄影头都可以监视其父对象、自身及其直接子对象。

计算监控树的所有节点所需的最小摄像头数量。

听卡哥的建议,这个题一刷先跳过

贪心总结:

相关推荐
珠海西格电力16 分钟前
云边端协同架构:零碳园区管理系统的技术底座
大数据·运维·人工智能·算法·架构·能源
山登绝顶我为峰 3(^v^)31 小时前
C/C++ 交叉编译方法
java·c语言·c++
一叶飘零_sweeeet2 小时前
Codex 与 Claude Code 深度拆解:两代 AI 编程智能体的技术本质与 Java 实战指南
java·ai·codex·claude code
Listen·Rain2 小时前
提示词和提示词模板
java·人工智能·spring boot
还有多久拿退休金2 小时前
让飞书知识库跟着 commit 自己长:一套自动化知识库的真实实现
前端·算法·架构
wuqingshun3141592 小时前
重写equals而不重写hashCode,会出什么问题?
java·开发语言
我今晚不熬夜3 小时前
Java语言实现Modbus协议通过用串口读取数据(以RTU为例)
java·网络协议
小锋java12343 小时前
Maven 4 要来了:15 年后,Java 构建工具迎来"彻底重构"
java·maven
KaMeidebaby3 小时前
卡梅德生物技术快报|小 RNA 适配体合成 + 多方法亲和力表征全流程标准化操作手册
前端·网络·数据库·人工智能·算法