738. 单调递增的数字
1.代码
class Solution {
public:
int monotoneIncreasingDigits(int n) {
string strNum = to_string(n);
int size = strNum.size();
int flag = size;
for (int i = size - 1; i > 0; i--) {
if (strNum[i - 1] > strNum[i]) {
flag = i;
strNum[i - 1]--;
}
}
for (int i = flag; i < size; i++) {
strNum[i] = '9';
}
return stoi(strNum);
}
};
2.思考
我们只要修改第一个不符合规则的减1,为了能够让结果比原来更小,后面全部变成9就行了,这就是最小,可以用一个变量标记最小下标
该代码解决了一个问题:找到给定整数中单调递增的最大子串,将其余部分替换为9以使结果最小。通过遍历数字字符串,找到第一个不满足单调递增条件的位置,然后将该位置前的数字减1,其余变为9。
195

被折叠的 条评论
为什么被折叠?



