• 代码随想录32|738.单调递增的数字,968.监控二叉树,56. 合并区间


    738.单调递增的数字

    链接地址

    class Solution {
    public:
        int monotoneIncreasingDigits(int n) {
            string str = to_string(n);
            int flag = str.size();
            for (int i = str.size() - 1; i > 0; i--) {
                if (str[i] < str[i - 1]) {
                    str[i - 1] -= 1;
                    flag = i;
                }
            }
    
            for (int j = flag; j < str.size(); j++) {
                str[j] = '9';
            }
    
            return stoi(str);
    
        }
    };
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20

    968.监控二叉树

    链接地址

    /**
     * Definition for a binary tree node.
     * struct TreeNode {
     *     int val;
     *     TreeNode *left;
     *     TreeNode *right;
     *     TreeNode() : val(0), left(nullptr), right(nullptr) {}
     *     TreeNode(int x) : val(x), left(nullptr), right(nullptr) {}
     *     TreeNode(int x, TreeNode *left, TreeNode *right) : val(x), left(left), right(right) {}
     * };
     */
    class Solution {
        
    private:
        int Tranversal(TreeNode* root, int& result) {
            if (root == nullptr) return 2;
            int left = Tranversal(root->left, result);
            int right = Tranversal(root->right, result);
            if (left == 2 && right == 2) {
                return 0;
            }
            //情况1:
            if (left == 0 || right == 0) {
                result++;
                return 1;
            }
            if (left == 1 || right == 1) {
                return 2;
            } 
            return -1;
            
        }
    public:
        int minCameraCover(TreeNode* root) {
            int result = 0;
            if (Tranversal(root, result) == 0) {
                result++;
            }
            return result;
        }
    };
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41

    56. 合并区间

    链接地址

    class Solution {
    public:
        vector<vector<int>> merge(vector<vector<int>>& intervals) {
            vector<vector<int>> result;
            if (intervals.size() == 0) return result;
            sort(intervals.begin(), intervals.end(), [](const vector<int>& a, const vector<int>& b){return a[0] < b[0];});
            result.push_back(intervals[0]);
            for (int i = 0; i < intervals.size(); i++) {
                if (result.back()[1] >= intervals[i][0]) {
                    result.back()[1] = max(intervals[i][1], result.back()[1]); 
                } else {
                    result.push_back(intervals[i]);
                }
            }
            return result;
        }
    };
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
  • 相关阅读:
    【Python语言速回顾】——异常&文件操作
    领域事件和集成事件没那么高大上
    Mysql——使用字符集以及校对
    C++: 多态
    怎样用好LinkedIn领英平台开发客户?
    高项_第十一章项目风险管理
    【JavaScript】网络请求
    【vue3】:前端登录功能解决方案
    axios源码记录 学习笔记
    C++ 关键字
  • 原文地址:https://blog.csdn.net/weixin_44378497/article/details/132819214