56. 合并区间
代码随想录
56. 合并区间 - 力扣(LeetCode)
class Solution {
public int[][] merge(int[][] intervals) {
Arrays.sort(intervals,(a,b)->{
if(a[0] == b[0])return a[1] - b[1];
return a[0] - b[0];
});
List<int[]> result = new ArrayList<>();
for(int i = 1;i < intervals.length;i++){
if(intervals[i][0] > intervals[i - 1][1]){
result.add(intervals[i - 1]);
}
else {
intervals[i][0] = intervals[i - 1][0];
intervals[i][1] = Math.max(intervals[i][1],intervals[i - 1][1]);
}
}
result.add(intervals[intervals.length - 1]);
return result.toArray(new int[0][]);
}
}
738.单调递增的数字
738. 单调递增的数字 - 力扣(LeetCode)
代码随想录
class Solution {
public int monotoneIncreasingDigits(int n) {
String numStr = Integer.toString(n);
char[] array = numStr.toCharArray();
int flag = array.length;
for(int i = array.length - 1;i > 0;i--){
if(array[i - 1] > array[i]){
array[i - 1]--;
flag = i;
}
}
for(int i = flag;i < array.length;i++){
array[i] = '9';
}
return Integer.parseInt(String.valueOf(array));
}
}
968.监控二叉树
968. 监控二叉树 - 力扣(LeetCode)
代码随想录
总结
class Solution {
int result = 0;
// 0无覆盖 1有摄像头 2有覆盖
public int minCame(TreeNode root){
if(root == null)return 2;//null设为有覆盖的情况
int left = minCame(root.left);
int right = minCame(root.right);
if(left == 2 && right == 2)return 0;
if(left == 0 || right == 0){//0 1的上面是1
result++;
return 1;
}
if(left == 1 || right == 1)return 2;
return -1;
}
public int minCameraCover(TreeNode root) {
if(minCame(root) == 0)result++;
return result;
}
}