本文最后更新于606 天前,其中的信息可能已经过时,如有错误请发送邮件到tomding1065@gmail.com
https://programmercarl.com/0738.%E5%8D%95%E8%B0%83%E9%80%92%E5%A2%9E%E7%9A%84%E6%95%B0%E5%AD%97.html
1.本题根据两位数的更改为单调递增的数字,得到当这个两位数不合题意的时候我们需要将十位上的数字减一然后将后面的数字赋值为9 依次推广为其他位数的数字,都是一点点向前推动不合题意就将前一位减一,然后将遍历到该位的下标储存起来,等到遍历结束后处理完所有位之后最后将从储存起来的下标之后的位置全部赋值为9。
CPP
class Solution {
public:
int monotoneIncreasingDigits(int n) {
string s = to_string(n);
int flag = s.size();
for(int i = s.size() - 1; i > 0; i--){
if(s[i - 1] > s[i]){
s[i - 1]--;
flag = i;
}
}
for(int i = flag; i < s.size(); i++){
s[i] = '9';
}
return stoi(s);
}
};