738.单调递增的数字 

先转成字符串,如果出现x>y,让x--,记录y的下标位置,最后从y的下标位置往后都赋值成9,最后再转回int。

class Solution {
public:
    int monotoneIncreasingDigits(int n) {
        string s=to_string(n);
        int flag=s.size();
        for(int i=s.size()-1;i>0;i--){
            if(s[i-1]>s[i]){
                s[i-1]--;
                flag=i;
            }
        }
        for(int i=flag;i<s.size();i++){
            s[i]='9';
        }
        return stoi(s);
    }
};

968.监控二叉树 

优先在叶子节点的父节点放摄像头,然后每隔两个节点放一个摄像头,因为叶子结点的数量相对于根节点的数量是指数级的,所以从低向上考虑,所以用后序遍历。

注意函数返回的是状态信息,不是最后的结果。

class Solution {
public:
    int res;
    int traversal(TreeNode* node){
        if(node==NULL) return 2;
        //后序遍历
        int left=traversal(node->left);
        int right=traversal(node->right);
        if(left==2&&right==2) return 0;
        if(left==0||right==0){
            res++;
            return 1;
        } 
        if(left==1||right==1) return 2;
        return -1;
    }
    int minCameraCover(TreeNode* root) {
        res=0;
        if(traversal(root)==0) res++;
        return res;
    }
};
06-29 09:40