● 738.单调递增的数字
class Solution { public int monotoneIncreasingDigits(int n) { String s = String.valueOf(n);//n可以是char,也可以是int char[] chars = s.toCharArray(); int start = s.length(); for(int i = s.length() - 1;i>=1;i--){ if(chars[i-1]>chars[i]){ //首先是从后往前检测,前一位必须要比后一位小 chars[i-1]--; start = i; //前一位变小后面的就可以都变成9 } } for(int i = start;i<s.length();i++){ chars[i] = '9'; } return Integer.parseInt(String.valueOf(chars)); } }
● 968.监控二叉树
/** * Definition for a binary tree node. * public class TreeNode { * int val; * TreeNode left; * TreeNode right; * TreeNode() {} * TreeNode(int val) { this.val = val; } * TreeNode(int val, TreeNode left, TreeNode right) { * this.val = val; * this.left = left; * this.right = right; * } * } */ class Solution { int res = 0; public int minCameraCover(TreeNode root) { if(minCam(root)==0){//这个题目已经规定不会只有一个结点 res++; } return res; } // 0-无覆盖 1-装摄像头 2-有覆盖 private int minCam(TreeNode root) { if(root == null){ return 2;//叶子节点固定为有覆盖 } int left = minCam(root.left); int right = minCam(root.right); if(left==2&&right==2){ return 0; }else if(left==0||right==0){ res++; return 1; }else{ return 2; } } }