91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》
  • 首頁 > 
  • 教程 > 
  • 開發技術 > 
  • leetCode 357. Count Numbers with Unique Digits | Dynamic Programming | Medium

leetCode 357. Count Numbers with Unique Digits | Dynamic Programming | Medium

發布時間:2020-08-06 09:15:09 來源:網絡 閱讀:489 作者:313119992 欄目:開發技術

357. 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].

題目大意:

找出10的n次方內,沒有重復數字的數的個數。例如10的3次方內,102為合法值,101為非法值。

思路:

采用排列組合來求出10的i次方,比如10的平方,范圍為[1,100),然后找出這個范圍內合法值有幾個。9*9(第一位不能為0,所以為9,第二位可以為除了第一位以外的9中情況)。

n次方范圍合法個數
0[0,1)1
1[1,10)
9
2[10,100)9*9
3
[100,1000)9*9*8
.........
i(i<9)
[10的i-1次方,10的i次方)9*9*8*7*...*(9 - n + 2)
9
[100000000,1000000000)9*9*8*7*6*5*4*3*2

經過上面分析,當n大于等于10的時候,合法值不再增加,因為n>=10時,數的位數超過了10位,所以肯定有重復的數字。


代碼如下:

class Solution {
public:
    int countNumbersWithUniqueDigits(int n) {
        int result,tmp;
        if(0 == n)
            return 1;
        if(1 == n)
            return 10;
        result = 10;
        tmp = 9;
        for(int i = 2; i<=min(n,9); ++i)
        {
            result += tmp * (11 - i);
            tmp *= (11 - i);
        }
        
        return result;
    }
};


2016-09-01 18:45:28

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

长丰县| 全椒县| 凤山市| 天等县| 民丰县| 历史| 遂昌县| 通化县| 太仓市| 新乡县| 卢龙县| 和静县| 富阳市| 鄯善县| 高青县| 册亨县| 嘉定区| 邵阳县| 甘肃省| 金门县| 哈巴河县| 铅山县| 察隅县| 松江区| 清丰县| 南靖县| 云阳县| 中宁县| 贵定县| 靖远县| 含山县| 承德市| 山西省| 乐安县| 金寨县| 左贡县| 洛阳市| 博兴县| 承德县| 保靖县| 昔阳县|