leetcode -- 357. Count Numbers with Unique Digits
生活随笔
收集整理的這篇文章主要介紹了
leetcode -- 357. Count Numbers with Unique Digits
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
Given a non-negative integer n, count all numbers with unique digits, x, where 0 ≤ x < 10n.
Example:
Input: 2
Output: 91
Explanation: The answer should be the total numbers in the range of 0 ≤ x < 100,
???????????? excluding 11,22,33,44,55,66,77,88,99
來源:力扣(LeetCode)
鏈接:https://leetcode-cn.com/problems/count-numbers-with-unique-digits
著作權歸領扣網絡所有。商業轉載請聯系官方授權,非商業轉載請注明出處。
?
?
我的思路1:(暴力)
1、最直接的就是暴力解,但是超時。到7的時候就超時了
class Solution { public:int countNumbersWithUniqueDigits(int n) {int len =pow(10,n);int count = 0;for(int i = 0; i < len; i++){if(check(i) == false) count++;}return len - count;}bool check(int n){ //如果有重復,返回falsevector<bool> vis(10, false);if(n == 0) return true;while(n != 0){int yushu = n % 10;if(vis[yushu] == false){vis[yushu] = true;}else return false;n /= 10;}return true;} };?
參考思路2:(dp)
1、dp[i]表示i位數字不同的數字數
class Solution { public:int countNumbersWithUniqueDigits(int n) {if(n == 0) return 1;int dp[11];dp[0] = 1;int per = 1;for(int i = 1; i <= 10; i++){dp[i] = dp[i-1] + 9*per;per = per * (10-i);}if(n <= 10) return dp[n];else return dp[10];}};?
總結
以上是生活随笔為你收集整理的leetcode -- 357. Count Numbers with Unique Digits的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: leetcode -- 515. Fin
- 下一篇: leetcode -- 1091. 二进