class Solution {
public:
int monotoneIncreasingDigits(int n) {
if(n == 0) return n;
if(n == 1000000000) return 999999999;
vector<int> nums, result;
while(n != 0) {
nums.push_back(n % 10);
n /= 10;
}
for(int i = 0; i < nums.size() - 1; ++i) {
if(nums[i] < nums[i + 1]) {
for(int j = 0; j < result.size(); j++) {
result[j] = 9;
}
nums[i + 1]--;
result.push_back(9);
}
else {
result.push_back(nums[i]);
}
}
result.push_back(*(nums.end() - 1));
int increase = 0;
for(int i = 0, j = 1; i < result.size(); i++, j *= 10) {
increase += j * result[i];
}
return increase;
}
};
714. 买卖股票的最佳时机含手续费 - 力扣(Leetcode)
好难a,看了题解也不会
这个无法从数学上证明,就算想到了也不敢用(无奈)
class Solution {
public:
int result;
Solution(): result(0) {}
int minCameraCover(TreeNode* root) {
if(Treaversal(root) == 0) result++;
return result;
}
int Treaversal(TreeNode* node) {
if(node == nullptr) return 1;
int left = Treaversal(node->left);
int right = Treaversal(node->right);
if(left == 1 && right == 1)
return 0;
if(left + right == 2) {
result++;
return 2;
}
if(left + right == 0) {
++result;
return 2;
}
if(left + right == 4) {
return 1;
}
if(left + right == 3)
return 1;
result++;
return 2;
}
};