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

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

    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])

    Hint:

      1. A direct way is to use the backtracking approach.
      2. Backtracking should contains three states which are (the current number, number of steps to get that number and a bitmask which represent which number is marked as visited so far in the current number). Start with state (0,0,0) and count all valid number till we reach number of steps equals to 10n.
      3. This problem can also be solved using a dynamic programming approach and some knowledge of combinatorics.
      4. Let f(k) = count of numbers with unique digits with length equals k.
      5. f(1) = 10, ..., f(k) = 9 * 9 * 8 * ... (9 - k + 2) [The first factor is 9 because a number cannot start with 0].

    题目大意:

    给一个非负整数n,找出[0,10^)之间各个位上数字不重复出现的数的个数,如n = 3,找出[0,1000)之间符合标准的数,如123,245,但122不符合要求,2重复出现。

    根据提示,题目可以用回溯和动态规划解决。这里使用的动态规划做的。看了讨论区,复杂度还可以降低

     1 public class Solution {
     2     public int countNumbersWithUniqueDigits(int n) {
     3         if(n == 0)
     4             return 1;
     5         int result[] = new int[11];
     6         result[1] = 10;     
     7       
     8         int preFactor = 9;
     9         for(int i = 2; i <= 10 && i <= n; i++){
    10             preFactor *= (9 - i + 2);
    11             result[i] = (preFactor + result[i - 1]);
    12         }//for
    13         
    14         if(n > 10)
    15             return result[10];
    16         return result[n];
    17     }
    18 }
  • 相关阅读:
    ID3决策树---Java
    Static、final、abstract、接口、构造方法及java语法总结
    集合类 Collection
    String、StringBuilder
    java基础类:Object类和Math类
    如何快速定位TempDB产生问题
    教你实现图片的惰性加载
    如何在 apache 中开启 gzip 压缩服务
    Data URI 应用场景小结
    获取图片base64编码的几种方法
  • 原文地址:https://www.cnblogs.com/luckygxf/p/5586545.html
Copyright © 2011-2022 走看看