2048. 下一个更大的数值平衡数

198 阅读1分钟

题目:
如果整数  x 满足:对于每个数位 d ,这个数位 恰好x 中出现 d 次。那么整数 x 就是一个 数值平衡数

给你一个整数 n ,请你返回 严格大于 n最小数值平衡数
算法:
方法一:暴力枚举
每个数出现的次数等于数字本身,排列组合规则不好找是不是?那我不找了,暴力又如何?

func nextBeautifulNumber(n int) int {
    n ++
Next:
    for ; ; n ++ {
        //  统计每个数出现的次数
        cnt := make([]int, 10)
        for x := n; x > 0; x = x / 10 {
            cnt[x % 10] ++
        }
        for x := n; x > 0; x = x / 10 {
            if cnt[x % 10] != x % 10 {
                continue Next
            }
            
        }
        return n
    }
    return 0
}