代码随想录算法训练营第27天|56. 合并区间、738.单调递增的数字
LeetCode56
2025-02-27 17:47:57 星期四
题目描述:力扣56
文档讲解:代码随想录(programmercarl)56. 合并区间
视频讲解:《代码随想录》算法视频公开课 (opens new window):贪心算法,合并区间有细节!LeetCode:56.合并区间
也是一个重叠问题,这个题和昨天的452用最少的箭引爆气球,还有435无重叠区间很像,改吧改吧就通过了
需要注意的就是,这个题容易卡在第65个测试用例好像是,给了一个[1,4],[2,3]的用例,所以当重叠的时候,需要额外加一个判断,就是这句if (intervals[i][1] < intervals[i - 1][1]) intervals[i][1] = intervals[i - 1][1];
,剩下的都没什么大问题
LeetCode测试
点击查看代码
class Solution {
private:
static bool cmp(vector<int> a, vector<int> b) {
return a[0] < b[0];
}
public:
vector<vector<int>> merge(vector<vector<int>>& intervals) {
vector<vector<int>> result;
sort(intervals.begin(), intervals.end(), cmp);
for (int i = 1; i < intervals.size(); i++) {
if (intervals[i][0] <= intervals[i - 1][1]) {
intervals[i][0] = intervals[i - 1][0];
if (intervals[i][1] < intervals[i - 1][1]) intervals[i][1] = intervals[i - 1][1];
} else {
result.push_back(intervals[i - 1]);
}
}
result.push_back(intervals[intervals.size() - 1]);
return result;
}
};
LeetCode738
题目描述:力扣738
文档讲解:代码随想录(programmercarl)738.单调递增的数字
视频讲解:《代码随想录》算法视频公开课:贪心算法,思路不难想,但代码不好写!LeetCode:738.单调自增的数字
代码随想录视频内容简记
这个题目很巧妙,刚上来看没有思路。感觉这个题最终要的就是遍历顺序,正常来想一定是从前向后遍历,但是这样就出问题了,这个题得用从后向前遍历
梳理
-
如何求得[32]这个数的最大值呢,其实只要前一位大于后一位,那么前一位减1,后一位置为9即可。这里也即是本题贪的局部最优,每两位数字都采用这个策略,那么全局最优就是递增且最大
-
另外就是本题引入了一个flag,用来统一做置9的处理,为什么要统一处理呢?因为如果只是一次一次更改,[1000]这个数就会被修改为900,而不是999,所以得用flag标记之后,最后统一再for循环遍历一次
-
另外就是还有一点需要注意,flag在一开始初始化的时候不能像平常一样,直接给初始化为0,应该是
int flag = str.size();
,为什么要这样做?就是因为[1234],这样每一位都比前面大的情况,flag是不用做变化的,所以最后的for循环就不必要了
LeetCode测试
点击查看代码
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 - 1] > str[i]) {
str[i - 1] -= 1;
flag = i;
}
}
for (int i = flag; i < str.size(); i++) {
str[i] = '9';
}
return stoi(str);
}
};
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 零经验选手,Compose 一天开发一款小游戏!
· 因为Apifox不支持离线,我果断选择了Apipost!
· 通过 API 将Deepseek响应流式内容输出到前端