zoukankan      html  css  js  c++  java
  • LeetCode 357 Count Numbers with Unique Digits

    题意:

    给定一个非负数n,要求算出所有符合条件的x。要求 0 ≤ x < 10^n,并且x的各位都不相同。

    题解:

    当n=0时,0<=x<1,因此只有x=0一种情况。

    当n=1时,0<=x<10,即0-9共10种情况。

    当n>=2时,最高位为1-9共9种情况,第二位不能与上一位相同但可以为0,因此也是9种情况,下一位是8种情况以此类推。

    应此结果是f(1)+f(2)+f(3)+....+f(n)

    而f(k) = 9 * 9 * 8 * ... (9 - k + 2)  (k>=2)

    代码:

    public class Solution {
        public int countNumbersWithUniqueDigits(int n) {
            if(0 == n)
                return 1;
            if(1 == n)
                return 10;
            int sum = 10;
            for(int i=2; i<=n; i++)
                sum+=getMul(i);
            return sum;
        }
      //计算f(k)
        public int getMul(int n){
            int result = 1;
            for(int i=9-n+2; i<=9; i++)
                result*=i;
            return result*9;    
        }
    }

     

  • 相关阅读:
    9.17
    9.14
    9.13
    9.13
    9.11
    9.28
    10 .19 知识点
    redux
    react路由
    react的三大属性
  • 原文地址:https://www.cnblogs.com/mycd/p/5742683.html
Copyright © 2011-2022 走看看