解题思路
从n+1开始遍历,进行判断当前数字是否符合,这个过程需要剪枝
代码
class Solution {
public int nextBeautifulNumber(int n) {
for (int i=n+1;i<=Integer.MAX_VALUE;i++){
if (check(i)){
return i;
}
}
return n;
}
public boolean check(int n){
char[] chars = Integer.toString(n).toCharArray();
Set<Integer> set = new HashSet<>();
int[] mem = new int[10];
for (int i=0;i<chars.length;i++){
//不能出现0
if (mem[chars[i]-48]+1 > (chars[i]-48)){
return false;
}else {
set.add(chars[i]-48);
mem[chars[i]-48]++;
}
}
for (int key : set){
if (key != mem[key]){
return false;
}
}
return true;
}
}
本文介绍了一个寻找大于给定整数n的下一个美丽数的算法。美丽数的定义是其各个数字递增且不包含0。代码中使用了Java实现,通过从n+1开始遍历并进行剪枝优化,检查每个数字是否满足条件。检查过程中,首先确保数字中不包含0,然后统计每个数字的出现次数,确保所有数字出现次数相等。该算法对于理解和实现数字排序及条件判断具有一定的参考价值。

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



