代码随想录算法训练营第三十七天 738.单调递增的数字 、 968.监控二叉树 (跳过)
代码随想录算法训练营第三十七天 | 738.单调递增的数字 、 968.监控二叉树 (跳过)
738.单调递增的数字
题目链接:738. 单调递增的数字 - 力扣(LeetCode)
以98为例, str[i] = 9, str[i + 1] = 8, 要使其变为小于等于98的整数,则 str[i] = 9 - 1 = 8,然后将str[i + 1] 赋值为8
以332为例, str[i] = 3, str[i + 1] = 2, 要使其小于32,则str[i] = 3 - 1 = 2, str[i + 1] = 9
class Solution {public int monotoneIncreasingDigits(int n) {String s = String.valueOf(n);char[] chars = s.toCharArray();// start用来标记赋值9从哪里开始// 设置为这个默认值,为了防止第二个for循环在start没有被赋值的情况下执行int start = s.length();// 从后往前遍历// 以98为例, str[i] = 9, str[i + 1] = 8, 要使其变为小于等于98的整数,则 str[i] = 9 - 1 = 8,然后将str[i + 1] 赋值为8for (int i = s.length() - 2; i >= 0; i--) {if (chars[i] > chars[i + 1]) {chars[i]--;start = i+1;}}for (int i = start; i < s.length(); i++) {chars[i] = '9';}return Integer.parseInt(String.valueOf(chars));}
}
968.监控二叉树 (跳过)
题目链接: