单调递增的数字

738. 单调递增的数字 - 力扣(LeetCode)

当且仅当每个相邻位数上的数字 xy 满足 x <= y 时,我们称这个整数是单调递增的。

给定一个整数 n ,返回 小于或等于 n 的最大数字,且数字呈 单调递增

示例 1:

1
2
输入: n = 10
输出: 9

示例 2:

1
2
输入: n = 1234
输出: 1234

示例 3:

1
2
输入: n = 332
输出: 299

提示:

  • 0 <= n <= 109

从后往前遍历,如果前一个大于后一个,那就将前一个-1,后一个数作一个标记

该标记及之后的数都要置为9,才是最大的递减数

比如113244,从后往前遍历到2,2 < 3,然后将改2之后的都置为9,把前一个数3-1=2,,即112999才是最大的数

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
class Solution {
public int monotoneIncreasingDigits(int n) {

String s = String.valueOf(n);
char[] charArr = s.toCharArray();
int flag = charArr.length;
for(int i = charArr.length - 1; i > 0; i--){
if(charArr[i-1] > charArr[i]){
charArr[i-1] --;
flag = i;
}
}

for(int i = flag; i < charArr.length; i ++){
charArr[i] = '9';
}
return Integer.valueOf(String.valueOf(charArr));
}
}

单调递增的数字
http://example.com/2023/03/03/算法/贪心/17. 单调递增的数字/
作者
PALE13
发布于
2023年3月3日
许可协议