https://leetcode.cn/problems/monotone-increasing-digits/description/
贪心
java
class Solution {
public int monotoneIncreasingDigits(int n) {
char[] nums=String.valueOf(n).toCharArray();
int len=nums.length;
int start=len;//记录从哪里开始,赋值9,从左到右
//从右到左遍历,从倒数第二个开始
for(int i=len-2;i>=0;i--){
if(nums[i]>nums[i+1]){//检查是否满足递增,不满足
//当前位置,数字减小1
nums[i]--;
//下个位置,数字变为9
start=i+1;
}
}
for(int i=start;i<len;i++){
nums[i]='9';
}
return Integer.parseInt(String.valueOf(nums));
}
}
/*
一旦出现strNum[i - 1] > strNum[i]的情况(非单调递增),首先想让strNum[i - 1]--,然后strNum[i]给为9
来strNum[i - 1] > strNum[i],strNum[i - 1]减小后,跟strNum[i]的大小关系不知。
但strNum[i]变成了9,strNum[i - 1]一定比9小
要从后向前遍历位数。还需要标记从哪里开始赋值9(从前往后)。
要求:小于等于n。从n开始找,[0,n]
要求:单调递增
要求:最大的数
*/