56. 合并区间
cpp
class Solution {
public:
vector<vector<int>> merge(vector<vector<int>>& intervals) {
vector<vector<int>> res;
sort(intervals.begin(), intervals.end(),
[](const vector<int>& a, const vector<int>& b) {
return a[0] < b[0];
});
vector<int> temp = intervals[0];
for (int i = 1; i < intervals.size(); i++) {
if (intervals[i][0] <= temp[1]) {
temp[1] = max(intervals[i][1],temp[1]);
} else {
res.push_back({temp[0], temp[1]});
temp = intervals[i];
}
}
res.push_back(temp);
return res;
}
};
738. 单调递增的数字
cpp
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);
}
};
968. 监控二叉树
cpp
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;
else if (left == 0 || right == 0) {
result++;
return 1;
} else
return 2;
}
public:
int minCameraCover(TreeNode* root) {
result = 0;
if (traversal(root) == 0) { // root 无覆盖
result++;
}
return result;
}
};