代码随想录第三十七天|Leetcode738.单调递增的数字、Leetcode968.监控二叉树

Leetcode738.单调递增的数字

题目链接:Leetcode738.单调递增的数字
一开始就想到了转成string来操作,我是天才懒狗

class Solution {
    
    
public:
    int monotoneIncreasingDigits(int n) {
    
    
        string num=to_string(n);
        if(num.size()==1) return n;
        int flag=num.size();
        for(int i=num.size()-1;i>0;i--){
    
    
            if(num[i-1]>num[i]){
    
    
                num[i-1]--;
                flag=i;//标记9开始的地方
            }
        }
        for(int i=flag;i<num.size();i++){
    
    //标记之后的全赋为9
            num[i]='9';
        }
        return stoi(num);
    }
};

Leetcode968.监控二叉树

题目链接:Leetcode968.监控二叉树
想到了标记树,但是没考虑清楚怎么标记,答案将traverse函数设置为 int 返回值,可以通过返回值衡量出不同的状态。

class Solution {
    
    
private:
    int result;
//0-未覆盖,1-摄像头,2-覆盖
    int traverse(TreeNode* root){
    
    
        if(root==NULL) return 2;
        int left=traverse(root->left);
        int right=traverse(root->right);
        if(left==0||right==0){
    
    
            result++;
            return 1;
        }
        if(left==1||right==1) return 2;
        if(left==2&&right==2) return 0;
        return -100000;
    }
public:
    int minCameraCover(TreeNode* root) {
    
    
        result=0;
        if(traverse(root)==0) result++;
        return result;
    }
};

猜你喜欢

转载自blog.csdn.net/muzi_taibai/article/details/129412895