枚举 LeetCode2048. 下一个更大的数值平衡数

2023-12-13 04:00:01

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

给你一个整数?n?,请你返回?严格大于?n?的?最小数值平衡数?。

如果n的位数是k,n它的下一个大的平衡数一定不会超过 k+1个k+1。

直接遍历之后判断即可。

class Solution {
public:
    int nextBeautifulNumber(int n) {
        int m=n;
        int cnt=0;
        while(m){
              m/=10; cnt++;
        }
        vector<int>Bnum(9);
        Bnum[0]=0;Bnum[1]=1;Bnum[2]=22;Bnum[3]=333;
        Bnum[4]=4444;Bnum[5]=55555;Bnum[6]=666666;Bnum[7]=7777777;Bnum[8]=88888888;
        int max_n=Bnum[cnt+1];
        int num_cnt[10];
        cout<<n<<" "<<max_n;
        for(int i=n+1;i<=max_n;i++){
              m=i;
              memset(num_cnt,0,sizeof(num_cnt));
              while(m){
                  num_cnt[m%10]++;
                  m/=10;
              }
              int flag=true;
              for(int j=0;j<=9;j++){
                  if(num_cnt[j]>=1&&num_cnt[j]!=j){
                      flag=false;
                      break;
                   }
              }
              if(flag)return i;    
        }
        return 0;
    }
};

文章来源:https://blog.csdn.net/m0_52043808/article/details/134892789
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。