该题是如果一个数的每一位都是单调递增的那就保留,如果不是,就找小于其最大的单调递增数。具体是应该前一位比后一位大那就将前一位减1,后面都变9。
class Solution {
public int monotoneIncreasingDigits(int n) {
String s=String.valueOf(n);
char [] sa=s.toCharArray();
int ffa=s.length();
for(int i=s.length()-2;i>=0;i--)
{
if(sa[i]>sa[i+1])
{
sa[i]--;
ffa=i+1;
}
}
for(int i=ffa;i<s.length();i++)
{
sa[i]='9';
}
return Integer.parseInt(String.valueOf(sa));
}
}
对于贪心算法,有些题对于我来说有些难,但是总体还是将部分的规律带入整体当中去成立。在做题的过程中对于部分题我是有思路但是代码还是写不出,对于这一点是我代码能力还是太弱了,我应该在今后增强我的代码能力。