第八章 贪心算法part05
2026.03.19 03.04 第三十六天
56 合并区间
创建一个新数组,在新数组上进行修改,当发现重叠区间时直接修改新数组中区间的右边界,不用pushback,当发现不重叠区间时直接pushback。
class Solution {
private:
static bool cmp(const vector<int>& a, const vector<int>& b) {
return a[0] < b[0];
}
public:
vector<vector<int>> merge(vector<vector<int>>& intervals) {
if(intervals.size() == 1) return intervals;
sort(intervals.begin(), intervals.end(), cmp);
vector<vector<int>> result;
result.push_back(intervals[0]);
for(int i = 1; i < intervals.size(); i++) {
if(result.back()[1] >= intervals[i][0]) {
result.back()[1] = max(result.back()[1], intervals[i][1]);
}
else {
result.push_back(intervals[i]);
}
}
return result;
}
};
738 单调递增的数字
想到了大体算法,但是具体实现起来比较困难,CPP语法基础还得提升~
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]) {
flag = i;
str[i - 1]--;
}
}
for(int i = flag; i < str.size(); i++) {
str[i] = '9';
}
return stoi(str);
}
};
968 监控二叉树
直接跳过了,二刷再来~

浙公网安备 33010602011771号