【代码随想录】day37

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档

文章目录


一、738单调递增的数字

写的无比复杂。。。。

cpp 复制代码
class Solution {
public:
    vector<int> getVec(int n) {
        vector<int> nums;
        while (n) {
            nums.push_back(n % 10);
            n /= 10;
        }
        reverse(nums.begin(), nums.end());
        return nums;       
    }

    int getNums(vector<int>& nums) {
        int num = 0;
        long flag = 1;
        for (int i = nums.size() - 1; i >= 0; i --) {
            num += nums[i] * flag;
            flag *= 10;
        }
        return num;
    }

    int monotoneIncreasingDigits(int n) {
        vector<int> nums = getVec(n);
        for (int i = 1; i < nums.size(); i ++) {
            if (nums[i] >= nums[i-1]) {
                continue;
            }
            if (i == 1) {
                nums[0] --;
                for (int j = i; j < nums.size(); j ++) {
                    nums[j] = 9;
                }
            }
            else {
                while (i > 0) {
                    if (nums[i] > nums[i-1]) {
                        break;
                    }
                    i --;
                }
                nums[i] --;
                for (int j = i + 1; j < nums.size(); j ++) {
                    nums[j] = 9;
                }
            }
        }
        return getNums(nums);
    }
};

优化版:

cpp 复制代码
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 j = flag; j < s.size(); j ++) {
            s[j] = '9';
        }
        return stoi(s);
    }
};

二、968监控二叉树

思路有的,但是写不出来。。。听完视频,原来思路也没有。

cpp 复制代码
class Solution {
public:
    int res;
    int traversal(TreeNode* cur) {
        if (cur == nullptr) {
            return 2;
        }
        int left = traversal(cur->left);
        int right = traversal(cur->right);
        if (left == 2 && right == 2) {
            return 0;
        }
        else if (left == 0 || right == 0) {
            res ++;
            return 1;
        }
        else if (left == 1 || right == 1) {
            return 2;
        }
        return -1;
    }

    int minCameraCover(TreeNode* root) {
        if (traversal(root) == 0) {
            res ++;
        }
        return res;
    }
};

相关推荐
生成论实验室6 分钟前
《事件关系阴阳博弈动力学:识势应势之道》第一篇:生成正在发生——从《即事经》到事件-关系网络
人工智能·科技·算法·架构·创业创新
漂流瓶jz10 分钟前
UVA-1152 和为0的4个值 题解答案代码 算法竞赛入门经典第二版
数据结构·算法·二分查找·题解·aoapc·算法竞赛入门经典·uva
leoufung18 分钟前
LeetCode 76:Minimum Window Substring 题解与滑动窗口思维详解
算法·leetcode·职场和发展
小O的算法实验室31 分钟前
2026年IEEE TETCI,山区环境下基于双种群进化的协同无人机巡逻任务协同优化,深度解析+性能实测
算法·论文复现·智能算法·智能算法改进
你撅嘴真丑44 分钟前
map 与 set容器的应用--话题焦点人物
数据结构
生成论实验室1 小时前
《事件关系阴阳博弈动力学:识势应势之道》第二篇:阴阳博弈——认知的动力学基础
数据结构·人工智能·科技·神经网络·算法
li1670902701 小时前
第二十七章:智能指针
c语言·数据结构·c++·visual studio
风筝在晴天搁浅1 小时前
字节高频题 小于n的最大数
算法
LabVIEW开发1 小时前
LabVIEW水力机组空蚀在线监测
算法·labview·labview知识·labview功能·labview程序
AI科技星1 小时前
科幻艺术书本封面:《全域数学》第一部·数术本源 第三卷 代数原本(P95-141)完整五级目录【乖乖数学】
算法·机器学习·数学建模·数据挖掘·量子计算