【算法训练营day37】LeetCode738. 单调递增的数字 贪心算法总结
LeetCode738. 单调递增的数字#
题目链接:738. 单调递增的数字
独上高楼,望尽天涯路#
想暴力一下,但是没能成功,以后最好不要死扣暴力解法浪费时间,多找规律。
慕然回首,灯火阑珊处#
局部最优:遇到
strNum[i - 1] > strNum[i]
的情况,让strNum[i - 1]--
,然后strNum[i]
变为9,可以保证这两位变成最大单调递增整数。全局最优:得到小于等于N的最大单调递增的整数。
但这里局部最优推出全局最优,还需要其他条件,即遍历顺序,和标记从哪一位开始统一改成9。
从前向后遍历会改变已经遍历过的结果!所以需要从后向前遍历。
class Solution {
public:
int monotoneIncreasingDigits(int n) {
string str_num = to_string(n);
int flag = str_num.size();
for (int i = str_num.size() - 1; i > 0; i--) {
if (str_num[i - 1] > str_num[i]) {
flag = i;
str_num[i - 1]--;
}
}
for (int j = flag; j < str_num.size(); j++) {
str_num[j] = '9';
}
return stoi(str_num);
}
};
作者:BarcelonaTong
出处:https://www.cnblogs.com/BarcelonaTong/p/17084510.html
版权:本作品采用「署名-非商业性使用-相同方式共享 4.0 国际」许可协议进行许可。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· DeepSeek 开源周回顾「GitHub 热点速览」
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了