C++ day37 贪心算法 单调递增的数字 监控二叉树

题目1:738 单调递增的数字

题目链接:单调递增的数字

对题目的理解

返回小于或等于n的最大数字,且数字是单调递增(单调递增数字的定义:每个相邻位上的数字满足x<=y

贪心算法

注意本题的遍历顺序是从后往前遍历

伪代码

代码

cpp 复制代码
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]--;
                flag = i;//从i往后,都是9
            }
        }
        for(int j = flag;j<str.size();j++){
            str[j] = '9';
        }
        return stoi(str);

    }
};
  • 时间复杂度:O(n),n 为数字长度
  • 空间复杂度:O(n),需要一个字符串,转化为字符串操作更方便

题目2:968 监控二叉树

题目链接:监控二叉树

对题目的理解

节点上安装摄像头,每个摄像头都可以监控其父对象,自身及其直接子对象,求所有节点所需最小摄像头的数量。

相关推荐
励志的小陈1 分钟前
双指针算法--移除元素、删除有序数组中的重复项、合并两个有序数组
算法
Summer_Uncle13 分钟前
【QT学习】Qt界面布局的生命周期和加载时机
c++·qt
小CC吃豆子22 分钟前
C++ 继承
开发语言·c++
hoiii18727 分钟前
Mean Shift目标跟踪算法MATLAB实现
算法·matlab·目标跟踪
励志的小陈27 分钟前
复杂度算法题——旋转数组(三种思路)
c语言·数据结构·算法
tankeven28 分钟前
HJ151 模意义下最大子序列和(Easy Version)
c++·算法
fengenrong1 小时前
20260325
开发语言·c++
BestOrNothing_20151 小时前
从C++结构体、类到 PID 控制器:运动控制初学者如何理解 C++ 工程代码
c++·面向对象·pid·运动控制·.h与.cpp·struct与class
不光头强1 小时前
力扣78子集题解
算法·leetcode·深度优先
独断万古他化1 小时前
【算法通关】二叉树中的深搜:DFS 递归解题套路
算法·二叉树·深度优先·dfs·递归