class Solution {
public int monotoneIncreasingDigits(int n) {
String str = String.valueOf(n);
char[] chars = str.toCharArray();
int start = chars.length;
int temp = Integer.parseInt(String.valueOf(chars[chars.length - 1]));
for (int i = chars.length - 2; i >= 0; i--) {
if (temp < Integer.parseInt(String.valueOf(chars[i]))) {
start = i;
chars[i] = String.valueOf(Integer.parseInt(String.valueOf(chars[i])) - 1).charAt(0);
}
temp = Integer.parseInt(String.valueOf(chars[i]));
}
for (int i = start + 1; i < chars.length; i++) {
chars[i] = '9';
}
return Integer.parseInt(new String(chars));
}
}
这题不会,这也太难了
class Solution {
public int minCameraCover(TreeNode root) {
int[] array = dfs(root);
return array[1];
}
public int[] dfs(TreeNode root) {
if (root == null) {
return new int[]{Integer.MAX_VALUE / 2, 0, 0};
}
int[] leftArray = dfs(root.left);
int[] rightArray = dfs(root.right);
int[] array = new int[3];
array[0] = leftArray[2] + rightArray[2] + 1;
array[1] = Math.min(array[0], Math.min(leftArray[0] + rightArray[1], rightArray[0] + leftArray[1]));
array[2] = Math.min(array[0], leftArray[1] + rightArray[1]);
return array;
}
}