738.单调递增的数字
题目描述:
给定一个非负整数 N,找出小于或等于 N 的最大的整数,同时这个整数需要满足其各个位数上的数字是单调递增。
(当且仅当每个相邻位数上的数字 x 和 y 满足 x <= y 时,我们称这个整数是单调递增的。)
思路:感觉还是思维题...从尾巴开始,如果前一个大于后一个那么指针指向后一个,前一个-1(因为题目要求最后的数字要小于原来的那个数。遍历完之后指针指向的位置及其之后的位置全置为9。
class Solution {
public:
int monotoneIncreasingDigits(int n) {
string s=to_string(n);
int flag=s.size();
for(int i=s.size()-1;i>0;i--)
{
if(s[i-1]>s[i])
{
flag=i;
s[i-1]--;
}
}
for(int i=flag;i<s.size();i++)
{
s[i]='9';
}
return stoi(s);
}
};