zoukankan      html  css  js  c++  java
  • 357. 计算各个位数不同的数字个数 ——LeetCode

    计算各个位数不同的数字个数

    给定一个非负整数 n,计算各位数字都不同的数字 x 的个数,其中 0 ≤ x < 10n 。

    示例:

    输入: 2
    输出: 91 
    解释: 答案应为除去 11,22,33,44,55,66,77,88,99 外,在 [0,100) 区间内的所有数字。
    

    思路

    (if(n==0) return 1)
    (if(n==1) return 10)
    (if(n==2) return 9*8 + f(1))
    (if(n==3) return f(3)=9*9*8+f(2))
    (if(n==3) return f(4)=9*9*8*7+f(3))

    class Solution {
    public:
        int countNumbersWithUniqueDigits(int n) {
            if(n==0) return 1;
            if(n==1) return 10;
            int dp = 10;
            int temp = 9;
            for(int i = 2;i < n+1 ;i++)
            {
                temp = 9;
                for(int j =0;j<i-1;j++)
                {
                   temp *= (9-j); 
                }
                dp += temp;
            }
    
            return dp;
        }
    };
    
  • 相关阅读:
    linux中read用法
    apt-get 使用指南
    linux文件系统
    KMP
    在C#中的各种应用
    A*算法,遗传算法
    Dijkstra算法,Floyd算法
    AE开发tips
    TOC 右键菜单
    ubuntu下的一些意外
  • 原文地址:https://www.cnblogs.com/jiashun/p/LeetCode357.html
Copyright © 2011-2022 走看看