给定一个非负整数 N,找出小于或等于 N 的最大的整数,同时这个整数需要满足其各个位数上的数字是单调递增。
(当且仅当每个相邻位数上的数字 x 和 y 满足 x <= y 时,我们称这个整数是单调递增的。)
示例 1:
输入: N = 10
输出: 9
代码
class Solution {public int monotoneIncreasingDigits(int N) {char[] temp=String.valueOf(N).toCharArray();int i=1;while (i<temp.length&&temp[i-1]<=temp[i]) i++;//找出非递增的while (i>0&&i<temp.length&&temp[i-1]>temp[i]) temp[--i]--;
//要将后面的数字变成全9,就要向前借位,借位之后如果变非递增了,就继续变9并且向前借1,直到保持的是非递增for(int j=i+1;j<temp.length;j++) temp[j]='9';//后面的全部变9return Integer.parseInt(String.valueOf(temp));}
}