首页 > 其他 > 详细

LeetCode-738. 单调递增的数字

时间:2020-12-15 15:07:56      阅读:19      评论:0      收藏:0      [点我收藏+]
### 解题思路
此处撰写解题思路
1.数字转为string,方便逐位比较,在取每一位的时候很好用。
2.然后从头找前面的字符大于后面的字符,找到后减一
3.比较当前字符是否小于前面的字符,若是,依次减一,知道找到不小于前面字符为止,注意不超过字符串边界。在当前字符后面全部置位为‘9’,转为数字即可。
### 代码

```cpp
class Solution {
public:
    int monotoneIncreasingDigits(int N) {
        //使用贪心法
        string str=to_string(N);
        int len=size(str);
        int n=0;
        for(;n<len-1;n++){
            if(str[n]>str[n+1]){
                str[n]-=1;//当前位置减一,后面全部为9;
                break;
            }}
        while(str[n-1]>str[n]&&n>0){
            str[n-1]-=1;
            n--;
        }
        for(n=n+1;n<len;n++){
            str[n]=‘9‘;
        }
        return stoi(str);
    }

    
};
```

LeetCode-738. 单调递增的数字

原文:https://www.cnblogs.com/zcjblogs/p/14138494.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!