leetcode 738
高位-1最好计算的啦
public static int monotoneIncreasingDigits(int n){
if(n<10) return n;
int[] arr=new int[10];
int mod=0;
for(int i=0;i<10;i++){
mod = ( int)Math.pow(10,i+1);
arr[i]= (int) (n%mod/Math.pow(10,i));
}
int pre=0;
for(int i=9;i>0;i--){
if(arr[i]<=arr[i-1]) continue;
pre=i;//记录位置 ,可能前边一样的,要继续while
while(pre<9 && arr[pre+1]==arr[pre]){
arr[pre]--;
pre++;
}
break;
}
//计算正规结果
int target= 0;
for(int i=pre;i<10;i++){
target += arr[i]*Math.pow(10,i);
}
return pre==0?target:target-1;
}