LeetCode 738.单调递增的数字
题目链接:
LeetCode 738.单调递增的数字
解题思路:
从后向前遍历,当不满足递增条件时,当前位置赋值为9,前一位减一。之后记录不满足位置,将后续全部赋值为9.
代码:
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;}}for(int i=flag;i<str.size();i++){str[i]='9';}int result = stoi(str);return result;}
};
LeetCode 968.监控二叉树
题目链接:
LeetCode 968.监控二叉树
解题思路:
将左右子树分为三种情况,1、其中一个有摄像。2、其中一个无覆盖。3、两个都被覆盖。
最后回传结果判断根节点是否有覆盖。
代码:
class Solution {
public:int result = 0;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;if(left==0||right==0){result++;return 1;}if(left==1||right==1) return 2;return -1;}int minCameraCover(TreeNode* root) {if(traversal(root)==0){result++;}return result;}
};