代码随想录算法训练营第三十七天|738.单调递增的数字、968.监控二叉树

738.单调递增的数字

738. 单调递增的数字 - 力扣(LeetCode)
本题从后往前依次取两位数字处理,如果是递减例如23,那么2变成1,3变成9,但是这里不是直接将3改变,而是记录3的位置,最后再将该位置后面的值全部改为9,这样才能保证整个数字是递增的,比如1000,如果只将第一个0改为9,就会变成900,所以应该将第一个0后所有的数字改为9

class Solution {
    public int monotoneIncreasingDigits(int n) {
        String s = String.valueOf(n);
        char[] chars = s.toCharArray();
        int start = s.length(); //记录变为9的起始位置
        for (int i = chars.length - 2; i >= 0; i--) {
            if (chars[i] > chars[i + 1]) {
                chars[i]--;
                start = i + 1;
            }
        }
        for (int i = start; i < chars.length; i++) {
            chars[i] = '9';
        }
        return Integer.parseInt(String.valueOf(chars));
    }
}

968.监控二叉树

968. 监控二叉树 - 力扣(LeetCode)
跳过

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容