【发布时间】:2018-07-11 17:02:15
【问题描述】:
给定一个非负整数 N,找出小于或等于 N 且单调不减位数的最大整数。
(回想一下,当且仅当每对相邻数字 x 和 y 满足 x
示例 1: 输入:N = 10 输出:9 示例 2: 输入:N = 1234 输出:1234 示例 3: 输入:N = 332 输出:299 注意:N 是 [0, 10^9] 范围内的整数。
嗨,我正在尝试解决上述问题,如果整数更大,我会超出时间限制。你能告诉我如何优化我的解决方案吗?谢谢。
代码:
class Solution {
public int monotoneNondecreasingDigits(int N) {
int num = N;
int quot=0,rem=0;
List<Integer> res = new ArrayList<>();
while( num>=0 ){
if( checkMontone(num) )
res.add(num);
if( res.size() == 2 )
break;
num -= 1;
}
return Collections.max(res);
}
public boolean checkMontone(int num ){
String s = Integer.toString(num);
for( int i=1;i<s.length();i++ ){
if( (int)s.charAt(i-1) > (int)s.charAt(i) )
return false;
}
return true;
}
}
【问题讨论】:
标签: java algorithm data-structures