Skip to content

Commit 8c27a2a

Browse files
Merge pull request youngyangyang04#823 from DoubleYellowIce/patch-4
Update 0738.单调递增的数字.md
2 parents b066b17 + 7f051a4 commit 8c27a2a

File tree

1 file changed

+26
-0
lines changed

1 file changed

+26
-0
lines changed

problems/0738.单调递增的数字.md

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -127,6 +127,7 @@ public:
127127

128128
Java:
129129
```java
130+
版本1
130131
class Solution {
131132
public int monotoneIncreasingDigits(int N) {
132133
String[] strings = (N + "").split("");
@@ -144,6 +145,31 @@ class Solution {
144145
}
145146
}
146147
```
148+
java版本1中创建了String数组,多次使用Integer.parseInt了方法,这导致不管是耗时还是空间占用都非常高,用时12ms,下面提供一个版本在char数组上原地修改,用时1ms的版本
149+
```java
150+
版本2
151+
class Solution {
152+
public int monotoneIncreasingDigits(int n) {
153+
if (n==0)return 0;
154+
char[] chars= Integer.toString(n).toCharArray();
155+
int start=Integer.MAX_VALUE;//start初始值设为最大值,这是为了防止当数字本身是单调递增时,没有一位数字需要改成9的情况
156+
for (int i=chars.length-1;i>0;i--){
157+
if (chars[i]<chars[i-1]){
158+
chars[i-1]--;
159+
start=i;
160+
}
161+
}
162+
StringBuilder res=new StringBuilder();
163+
for (int i=0;i<chars.length;i++){
164+
if (chars[i]=='0'&&i==0)continue;//防止出现09这样的情况
165+
if (i>=start){
166+
res.append('9');
167+
}else res.append(chars[i]);
168+
}
169+
return Integer.parseInt(res.toString());
170+
}
171+
}
172+
```
147173

148174

149175
Python:

0 commit comments

Comments
 (0)