day32:贪心part6
738.单调递增的数字
class Solution {
public int monotoneIncreasingDigits(int n) {
String s = String.valueOf(n);
char[] chars = s.toCharArray();
int flag = chars.length;
for (int i = chars.length - 2; i >= 0; i--) {
if (chars[i] > chars[i + 1]) {
chars[i]--;
flag = i + 1;
}
}
for (int i = flag; i < chars.length; i++)
chars[i] = '9';
return Integer.parseInt(String.valueOf(chars));
}
}
968.监控二叉树
叶子节点的父节点放摄像头是最好的
后序遍历因为要从底往上
class Solution {
int camera = 0;
public int minCameraCover(TreeNode root) {
if(minCamera(root) == 0) camera++;
return camera;
}
// 0 无覆盖 1 有摄像头 2 有覆盖
private int minCamera(TreeNode root) {
if (root == null) return 2;
int left = minCamera(root.left);
int right = minCamera(root.right);
// 左右都覆盖,父节点不用覆盖
if (left == 2 && right == 2)
return 0;
// 左右有一个无覆盖,父节点需要有摄像头
else if (left == 0 || right == 0) {
camera++;
return 1;
} else return 2;
// 其他情况,左右至少有一个有摄像头,父节点被覆盖了
}
}