给定一个非负整数 N,找出小于或等于 N 的最大的整数,同时这个整数需要满足其各个位数上的数字是单调递增。
(当且仅当每个相邻位数上的数字 x 和 y 满足 x <= y 时,我们称这个整数是单调递增的。)
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/monotone-increasing-digits
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
注意333222这种情况 应该返回299999而不是332999
class Solution {
public:
int monotoneIncreasingDigits(int N) {
string s = to_string(N);
int i = 0;
while(i < s.size()-1 && s[i] <= s[i+1]) ++i; //找到不递增的位置
if(i == s.size()-1) return N;
s[i]--;//减一,
while(i > 0 && s[i] < s[i-1] ) s[--i]--; //i往回检查,不满足递增就减一
++i;
for(; i < s.size(); ++i){ //后面全置9
s[i] = '9';
}
return stoi(s);
}
};