首页 > 编程语言 >代码随想录算法Day37 | 738.单调递增的数字

代码随想录算法Day37 | 738.单调递增的数字

时间:2023-03-09 22:59:52浏览次数:64  
标签:int Day37 chars 随想录 start length parseInt 738 strings

738.单调递增的数字

题目链接:738. 单调递增的数字 - 力扣(LeetCode)

思路

将数字转换成字符数组形式,然后从后向前遍历,当遇到当前这个数大于后一个数的时候,这个数减一,他的后一个数赋为9,这也是贪心策略。

在代码实现上,可以设置一个start变量来记录需要变为 9 的起始位置。

代码

 1 版本1
 2 class Solution {
 3     public int monotoneIncreasingDigits(int N) {
 4         String[] strings = (N + "").split("");
 5         int start = strings.length;
 6         for (int i = strings.length - 1; i > 0; i--) {
 7             if (Integer.parseInt(strings[i]) < Integer.parseInt(strings[i - 1])) {
 8                 strings[i - 1] = (Integer.parseInt(strings[i - 1]) - 1) + "";
 9                 start = i;
10             }
11         }
12         for (int i = start; i < strings.length; i++) {
13             strings[i] = "9";
14         }
15         return Integer.parseInt(String.join("",strings));
16     }
17 }
 1 版本2
 2 class Solution {
 3     public int monotoneIncreasingDigits(int n) {
 4         String s = String.valueOf(n);
 5         char[] chars = s.toCharArray();
 6         int start = s.length();
 7         for (int i = s.length() - 2; i >= 0; i--) {
 8             if (chars[i] > chars[i + 1]) {
 9                 chars[i]--;
10                 start = i+1;
11             }
12         }
13         for (int i = start; i < s.length(); i++) {
14             chars[i] = '9';
15         }
16         return Integer.parseInt(String.valueOf(chars));
17     }
18 }

968.监控二叉树

先欠着,二刷的时候在补上。。。

贪心总结

直接看卡哥的总结吧,链接:代码随想录 (programmercarl.com)

标签:int,Day37,chars,随想录,start,length,parseInt,738,strings
From: https://www.cnblogs.com/xpp3/p/17201788.html

相关文章