V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
Newyorkcity
V2EX  ›  问与答

请帮我看看为啥我这个代码不对呢?

  •  
  •   Newyorkcity · 2020-05-18 13:09:57 +08:00 · 592 次点击
    这是一个创建于 1476 天前的主题,其中的信息可能已经有所发展或是发生改变。

    leetcode 1012

    public class Solution {
        public int numDupDigitsAtMostN(int N) {
            if (N < 11) return 0;
            String Nstr = String.valueOf(N);
            int Nlength = Nstr.length();
            int nonrepeatableNumTotal = 0;
    
            //首先数清楚位数小于 N 的数中发生了重复的数
            //位数等于 n 时,最高位也就是第一位只有 9 种选择(不能选 0 )但
            //但之后的 n-1 位可从(10-1)个数字中任一选择
            for (int i = 0; i + 1 < Nlength; i++) {
                nonrepeatableNumTotal += (9 * A(i, 9));
            }
    
    
            //然后数清楚和给出的数据等位数的数里有发生了重复的数
            //由于规定了位数要相同,所以最高位即 i==1 时不能取 0,故有 t-1
            for (int i = 0; i < Nlength; i++) {
                int t = Nstr.charAt(i) - '0';
                if (i == 0) {
                    nonrepeatableNumTotal += ((t - 1) * A(Nlength - 1, 9));
                } else {
                    nonrepeatableNumTotal += (t * A(Nlength - 1 - i, 9 - i));
                }
            }
    
            int used = 0;
            for (char c : Nstr.toCharArray()) {
                int t = (1 << (c - '0'));
                if ((used & t) == 0) {
                    used |= t;
                } else {
                    return N - nonrepeatableNumTotal + 1;
                }
            }
    
            return N - nonrepeatableNumTotal;
        }
    
        private int factorial(int n) {
            if (n == 1 || n == 0) return 1;
            return n * factorial(n - 1);
        }
    
        private int A(int m, int n) {
            return factorial(n) / factorial(n - m);
        }
    }
    

    谢谢

    1 条回复    2020-05-18 19:30:44 +08:00
    lysS
        1
    lysS  
       2020-05-18 19:30:44 +08:00
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2624 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 25ms · UTC 13:35 · PVG 21:35 · LAX 06:35 · JFK 09:35
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.