代码随想录刷题第37天|LeetCode738单调递增的数字、LeetCode968监控二叉树

news/2024/11/22 11:52:33/

1、LeetCode738单调递增的数字

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

暴力解法:

判断是否单调递增,可以先定义一个max = 10;

m = num % 10取最后一个数字,判断是否max>=m;

num = num / 10去掉最后一个数字,再继续取最后的数字与max比较,一旦大于max,说明不是单调递增,return false;

class Solution {
public:bool checkNum(int num){int max = 10;while(num){int m = num % 10;if (max >= m){max = m;num = num / 10;}else{return false;}}return true;}int monotoneIncreasingDigits(int n) {while(n){if (checkNum(n)){return n;}else{n--;}}return 0;}
};

贪心解法:

一旦出现strNum[i - 1] > strNum[i]的情况,首先想让strNum[i - 1]--,然后strNum[i]为9。

而且定义一个falg,标记赋值9从哪里开始。flag初始化为strNum.size()。

to_string()

stoi()

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

2、LeetCode968监控二叉树

题目链接:968、监控二叉树

分为三种情况:0-该节点无覆盖,1-该节点有摄像头,2-该节点有覆盖

因为叶子结点多,应该尽可能让叶子结点的父节点有摄像头,才能让摄像头最少。

首先遍历时遇到空节点怎么办?

如果空节点状态为0无覆盖,则叶子结点必须为1有摄像头,不符合叶子结点的父节点有摄像头。

如果空节点状态为1有摄像头,则叶子结点为2有覆盖,叶子结点的父节点不需要有摄像头。

如果空节点状态为2有覆盖,则叶子结点为无覆盖,叶子结点的父节点要有摄像头。

所以遇到空节点应该返回状态2。

遍历时的情况:

左右孩子都有覆盖2,该节点为无覆盖0;

左右孩子至少有一个无覆盖,则该节点一定要有摄像头1;result++;

左右孩子其中有一个摄像头,则该节点有覆盖2;

递归结束后头结点可能为0无覆盖,则让头结点状态变为有摄像头。result++。

/*** 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 {
public: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;}int minCameraCover(TreeNode* root) {result = 0;if (traversal(root) == 0) result++;return result;}
};


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

相关文章

小度c1语言控制电视,小度在家1c怎么连接电视机

大家好&#xff0c;我是时间财富网智能客服时间君&#xff0c;上述问题将由我为大家进行解答。 小度在家1c连接电视机的方法如下&#xff1a; 1、打开小度音箱。 2、在“智能家居”中选择需要授权的电视型号。 3、授权成功后开启蓝牙&#xff0c;用电视搜索并连接小度智能音箱蓝…

华为鸿蒙智慧屏和手机,大屏手机还是智能电视?华为用鸿蒙系统增智慧

原标题&#xff1a;大屏手机还是智能电视&#xff1f;华为用鸿蒙系统增智慧 [PConline 资讯]7月26日&#xff0c;华为手机官方微博表示&#xff1a;【华为智慧屏 让智慧更大】华为将持续推动产业升级&#xff0c;实现生态共赢&#xff0c;与业界广泛合作&#xff0c;开放生态赋…

高刷新率电视机有必要吗?

常见的60Hz&#xff0c;便是指屏幕最高显示的图像帧幅为60张&#xff0c;刷新率越高&#xff0c;闪烁现象越不明显、显示效果越流畅&#xff0c;另外电视厂商针对刷新率的优化设计&#xff0c;可以有效减少液晶面板显示高速移动物体时残影的先天不足。 因此理论上来说&#xf…

android电视机软件锁,如何解锁电视的“应用锁”?OPPO智能电视R1这些操作学起来...

原标题&#xff1a;如何解锁电视的“应用锁”&#xff1f;OPPO智能电视R1这些操作学起来 随着智能电视越来越具有性价比&#xff0c;用户也逐渐从传统电视过渡到大屏娱乐时代&#xff0c;而这“后浪”与“前浪”的区别之一便是&#xff1a;智能电视的内容资源要更加丰富。虽然相…

手机当电脑音响_舞台音响灯光设备有哪些注意事项

舞台音响灯光设备中音响设备的品种许多&#xff0c;一般情况下由话筒(或无线话筒)调音台功放音箱即可。音源除话筒外&#xff0c;有时还需求DVD&#xff0c;电脑放音乐等&#xff0c;也可用电脑。但如果是要专业的舞台音响效果&#xff0c;除了需求专业的舞台搭建工作人员之外&…

小米电视机html,小米电视机功能详解 教你轻松使用

小米智能电视怎么用法 小米电视九大操作功能汇总&#xff0c;小米电视有哪些操作功能&#xff1f;小米电视支持HDR解码&#xff1b;电视也能轻松管理家中智能设备&#xff1b;语音体感蓝牙遥控新玩法&#xff1b;小米蓝牙耳机完美打造私人视听新体验&#xff1b;小米电视在线商…

如何将废旧显示器改造为家用电视机

最近老丈人那边电视坏了&#xff0c;缺电视。而我家这边又有几台不用的电脑显示器&#xff0c;所以作为IT男的第一直觉就是能不能将这些不用的显示器发挥起来他们的余热&#xff0c;还能节省开支呢。 同样作为IT男&#xff0c;自己也习惯先自己动脑子解决问题&#xff0c;解决不…

智能云电视机顶盒怎么连接(设备连接方法和注意项)

如果你家里有电视的话&#xff0c;肯定就有一个机顶盒相匹配&#xff0c;然而你们真的认识了解机顶盒吗&#xff1f;你自己会接线吗&#xff1f;如果你不知道不太清楚&#xff0c;那请耐心的地看完这篇文章&#xff01;看完之后&#xff0c;我敢保证百分百都没问题&#xff0c;…