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

    Given a non-negative integer n, count all numbers with unique digits, x, where 0 ≤ x < 10^n.

    Example:

    Given n = 2, return 91. (The answer should be the total numbers in the range of 0 ≤ x < 100, excluding [11,22,33,44,55,66,77,88,99])

    分析

    这道题求在 0 ≤ x < 10^n 范围内各位数不相同的数有多少个,可以分为一位数不同的有多少个,两位数不同的有多少个,三位数不同的有多少个等等,根据提示中所给的公式,1位数字有10个,第k位有f(k) = 9 * 9 * 8 * … (9 – k + 2)个,累加从2位到n位的f(k)的总和,再加上1位的10个数字,即为所求~

    class Solution {
    public:
        int countNumbersWithUniqueDigits(int n) {
            int t=9,cnt=10;
            if(n==0) return 1;
            else if(n==1) return 10;
            else if(n>10) return 0;
            else 
              for(int i=2;i<=n;i++){
                 t*=(9-i+2);
                 cnt+=t;
              }
            return cnt;
        }
    };
    
  • 相关阅读:
    大话设计模式笔记 观察者模式
    nginx限速
    枚举实现的单例模式
    Nginx负载均衡
    插件lombok的介绍安装
    ThreadLocal类
    CopyOnWriteArrayList并发容器
    ConcurrentHashMap实现原理
    elasticsearch配置文件
    sql优化
  • 原文地址:https://www.cnblogs.com/A-Little-Nut/p/10061156.html
Copyright © 2011-2022 走看看