代码随想录算法训练营第三十七天|738.单调递增的数字 968.监控二叉树

news/2024/11/29 3:58:21/

目录

LeeCode 738.单调递增的数字

LeeCode 968.监控二叉树


LeeCode 738.单调递增的数字

738. 单调递增的数字 - 力扣(LeetCode)

思路:从后向前遍历,遇到strNum[i - 1] > strNum[i]的情况,则strNum[i - 1]--;,重复利用上次比较的结果进行比较,直至得出最终答案。

时间复杂度:O(n)                        空间复杂度:O(n)

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

LeeCode 968.监控二叉树

968. 监控二叉树 - 力扣(LeetCode)

思路:使用后序遍历从下往上每隔两个节点放一个摄像头。

局部最优:让叶子节点的父节点安摄像头,所用摄像头最少,整体最优:全部摄像头数量最少。

状态转移:0:该节点无覆盖;   1:本节点有摄像头;   2:本节点有覆盖。

时间复杂度:O(n)                        空间复杂度:O(n) 

class Solution {
private:int result;int traversal(TreeNode* cur) {if (cur == NULL) return 2;int left = traversal(cur->left);int right = traversal(cur->right);if (left == 2 && right == 2)  return 0;if (left == 0 || right == 0) {result++;return 1;}if (left == 1 || right == 1) return 2;return -1;}
public:int minCameraCover(TreeNode* root) {result = 0;if (traversal(root) == 0) result++;return result;}
};

http://www.ppmy.cn/news/109696.html

相关文章

代码随想录算法训练营第四十一天|343. 整数拆分 96.不同的二叉搜索树

目录 LeeCode 343. 整数拆分 动态规划法 贪心解法 LeeCode 96.不同的二叉搜索树 LeeCode 343. 整数拆分 343. 整数拆分 - 力扣&#xff08;LeetCode&#xff09; 动态规划法 思路&#xff1a; 1.确定dp数组及下标含义&#xff1a;dp[i]&#xff1a;分拆数字i&#xff0…

git使用X篇_1_SVN和GIT的版本控制区别及git等的使用方法

GIT是分布式版本控制系统&#xff0c;可以在本地记录代码的修改过程而不一定上传至SVN服务端&#xff1a; 详细使用差异见博客&#xff1a; 版本控制&#xff1a;SVN和GIT的一些使用感受 版本控制&#xff1a;SVN和GIT的一些使用感受&#xff08;续&#xff09; git/svn_SVN和G…

Centos6.5环境Nginx 1.16.1升级到1.24.0版本

一、背景 2023年4月11日&#xff0c;官方发布了Nginx最新稳定版&#xff0c;版本号为 1.24.0。该版本是基于1.23.x&#xff08;1.23.0 - 1.23.4&#xff09;开发版的Bug修复&#xff0c;以及一些新特性的加入&#xff0c;而形成的稳定版。安全部门扫描后&#xff0c;发现现场不…

二分查找三道题

二分查找 两种写法&#xff1a;左闭右闭[left,right]、左闭右开[left,right) 主要有几点不同&#xff1a;1. right是从num.length开始还是从num.length-1开始。2.left<还是<right。3.rightmid还是mid1 左闭右闭写法&#xff1a; public int search(int[] nums, int targ…

网络攻防技术--论文阅读--《基于自动数据分割和注意力LSTM-CNN的准周期时间序列异常检测》

英文题目&#xff1a;Anomaly Detection in Quasi-Periodic Time Series based on Automatic Data Segmentation and Attentional LSTM-CNN 论文地址&#xff1a;Anomaly Detection in Quasi-Periodic Time Series Based on Automatic Data Segmentation and Attentional LST…

分享一块很有意思的C代码(五),谈谈static变量在裸机轮询系统中的用法【原创】

文章目录 静态局部变量静态全局变量、静态局部变量、全局变量、局部变量区别谈谈static变量在裸机轮询系统中的用法如何用static局部变量实现非static全局变量的功能?错误方式静态局部变量 (1) 静态局部变量在静态存储区内分配存储单元。在程序整个运行期间都不释放。而自动变…

【C++入门】什么是引用

目录 一、引用概念 二、引用特性 三、常引用 四、使用场景 1. 做参数 2. 做返回值 五、传值&#xff0c;传引用效率比较 六、引用和指针的区别 一、引用概念 引用不是新定义一个变量&#xff0c;而是给已存在变量取一个别名&#xff0c;编译器不会为引用变量开辟内存空间…

C++ 常用算数生成算法

&#x1f914;常用算数生成算法&#xff1a; 该算法函数需要调用<numeric>头文件 1.accumulate 计算总和 在 C STL 中&#xff0c;accumulate() 是一种常用的算法&#xff0c;用于计算指定范围内的元素之和。 accumulate() 的函数原型为&#xff1a; template<c…