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.监控二叉树
题目链接:
解题思路:
将左右子树分为三种情况,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;
}
};