【算法训练营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 国际」许可协议进行许可。

posted @   BarcelonaTong  阅读(13)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· DeepSeek 开源周回顾「GitHub 热点速览」
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
more_horiz
keyboard_arrow_up dark_mode palette
选择主题
menu
点击右上角即可分享
微信分享提示