国际设计师网站,外包加工网是不是骗人的,漯河网站建设 千弘网络,做网站济宁3妹#xff1a;2哥2哥#xff0c;你有没有看到新闻#xff0c; 有人中了2.2亿彩票大奖#xff01; 2哥 : 看到了#xff0c;2.2亿啊#xff0c; 一生一世也花不完。 3妹#xff1a;为啥我就中不了呢#xff0c;不开心呀不开心。 2哥 : 得了吧#xff0c;你又不买彩票2哥2哥你有没有看到新闻 有人中了2.2亿彩票大奖 2哥 : 看到了2.2亿啊 一生一世也花不完。 3妹为啥我就中不了呢不开心呀不开心。 2哥 : 得了吧你又不买彩票还是脚踏实地的好~ 3妹小富靠勤中富靠德大富靠命 可能是我命不好。 2哥 : 哎想我口袋只有几个硬币叮咚作响。 3妹说到硬币 我今天看到一个关硬币的题目让我也来考考你吧~ 题目
如果整数 x 满足对于每个数位 d 这个数位 恰好 在 x 中出现 d 次。那么整数 x 就是一个 数值平衡数 。
给你一个整数 n 请你返回 严格大于 n 的 最小数值平衡数 。
示例 1
输入n 1 输出22 解释 22 是一个数值平衡数因为
数字 2 出现 2 次 这也是严格大于 1 的最小数值平衡数。 示例 2
输入n 1000 输出1333 解释 1333 是一个数值平衡数因为
数字 1 出现 1 次。数字 3 出现 3 次。 这也是严格大于 1000 的最小数值平衡数。 注意1022 不能作为本输入的答案因为数字 0 的出现次数超过了 0 。 示例 3
输入n 3000 输出3133 解释 3133 是一个数值平衡数因为
数字 1 出现 1 次。数字 3 出现 3 次。 这也是严格大于 3000 的最小数值平衡数。
提示
0 n 10^6
思路 题目给一个整数 n 要求返回严格大于 n 的最小数值平衡数我们直接按照题目的要求进行模拟即可。
观察到 0n10^6 , 我们可能返回的数值平衡数最大是 1224444这个范围可以在时间要求内找到答案。
我们依次枚举大于 n 的整数统计所有数字的出现频数判断是否是数值平衡数即可。
java代码
class Solution {public int nextBeautifulNumber(int n) {for (int i n 1; i 1224444; i) {if (isBalance(i)) {return i;}}return -1;}private boolean isBalance(int x) {int[] count new int[10];while (x 0) {count[x % 10];x / 10;}for (int d 0; d 10; d) {if (count[d] 0 count[d] ! d) {return false;}}return true;}
}