738.单调递增的数字
public class Solution {
public int MonotoneIncreasingDigits(int n) {
string nu=n.ToString();
char[] num=nu.ToCharArray();
int idx=num.Length;
for(int i=num.Length-1;i>0;i--)
{
if(num[i]<num[i-1])
{
idx=i;
num[i-1]--;
}
}
for(int i=idx;i<num.Length;i++)
{
num[i]='9';
}
return int.Parse(new string(num));
}
}
先将输入的数字转换成Char数组类型储存,便于单个遍历以及修改,然后从最后一个依次向前遍历,如果第I个比第I-1个小,那Idx指针记录当前位置说明需要后续改变为9,同时处理I-1处减小1,当天减小操作处理完后将Idx后的所有数字都变为9则符合题意。