题目链接:https://leetcode-cn.com/problems/monotone-increasing-digits/
题意:给你一个整数N,求一个满足从前往后是每一位是递增的最大整数。
分析:想要求最大的数,就得尽可能让前面的位N相等,一开始先从前往后遍历看看每一位是不是递增的,如果到了某一位不再满足递增关系,可以将这一位的前一位减1,之后从这一位开始到后面的所有位都直接为9,要注意的是,前一位减1后可能会破坏之前的递增关系,所以还有继续判断一下前面是不是还满足,不满足的就在不满足的那一位减1即可。
class Solution { public: int monotoneIncreasingDigits(int N) { string s=to_string(N); int i=1; while(i<s.length()&&s[i-1]<=s[i])i++; if(i<s.length()){ while(i>0&&s[i-1]>s[i]){ s[i-1]-=1; i--; } for(i+=1;i<s.length();i++){ s[i]='9'; } } return stoi(s); } };