357. Count Numbers with Unique Digits 题解
2017-05-25 17:47
148 查看
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
题目链接:357. Count Numbers with Unique Digits
算法描述:
由题意知,给定一个非负数 “n” ——表示数字的位数,我们将返回这个位数以内没有重复数字的个数。
我们可以统计规律,当位数为 “0” 时,返回1。当位数为 “1”时,我们知道 “0” 到 “9” 任何数都满足规律,返回10。
当位数大于等于 “2” 时,我们需要用排列组合的方法来求,当位数为 “n” 时,构造数的最高为可以选择除 “0” 以外的所有数,一共有9个,次高位可以选择除最高位的9个数,之后依次递减。所以,公式为 “9 * 9 * 8 * 7···· * ( 9 - n + 2 )”。当位数为 “n-1” 时,构造数的如上方法构造。·······
最后,我们返回 “n” 位数的构造数加上 “n-1” 位数的构造数,加上 “n-2” 位数的构造数····,加上 “1” 位数的构造数。
代码:
class Solution {
public:
int countNumbersWithUniqueDigits(int n) {
if(n == 0){
return 1;
}
if(n == 1){
return 10;
}
int temp = 9;
int ans = 10;
for(int i=2; i<=n; i++){
temp *= (9-i+2);
ans += temp;
}
return ans;
}
};
题目描述:
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])
题目链接:357. Count Numbers with Unique Digits
算法描述:
由题意知,给定一个非负数 “n” ——表示数字的位数,我们将返回这个位数以内没有重复数字的个数。
我们可以统计规律,当位数为 “0” 时,返回1。当位数为 “1”时,我们知道 “0” 到 “9” 任何数都满足规律,返回10。
当位数大于等于 “2” 时,我们需要用排列组合的方法来求,当位数为 “n” 时,构造数的最高为可以选择除 “0” 以外的所有数,一共有9个,次高位可以选择除最高位的9个数,之后依次递减。所以,公式为 “9 * 9 * 8 * 7···· * ( 9 - n + 2 )”。当位数为 “n-1” 时,构造数的如上方法构造。·······
最后,我们返回 “n” 位数的构造数加上 “n-1” 位数的构造数,加上 “n-2” 位数的构造数····,加上 “1” 位数的构造数。
代码:
class Solution {
public:
int countNumbersWithUniqueDigits(int n) {
if(n == 0){
return 1;
}
if(n == 1){
return 10;
}
int temp = 9;
int ans = 10;
for(int i=2; i<=n; i++){
temp *= (9-i+2);
ans += temp;
}
return ans;
}
};
相关文章推荐
- 2014校招 Google在线测试第二场题解 E
- 【题解】Weird journey Codeforces 788B 欧拉路
- LeetCode题解:Anagrams
- 【计蒜客14899】积性函数(加强版) 题解
- LeetCode题解:Letter Combinations of a Phone Number
- 398. Random Pick Index 题解
- LeetCode题解:Remove Duplicates from Sorted Array I and II
- LeetCode 题解(Week6):300. Longest Increasing Subsequence
- 第一章:3n+1问题题解
- 喵哈哈村的魔法考试 Round #12 (Div.2) 题解
- LeetCode题解:Sort Colors
- leetcode题解-53. Maximum Subarray && 448. Find All Numbers Disappeared in an Array
- LeetCode题解: Longest Consecutive Sequence
- 222. Count Complete Tree Nodes 题解
- LeetCode题解: Reverse Linked List II
- ZJOI2017Day1题解(真·抄标解)
- HDU 1166 敌兵布阵 题解与分析 (普通线段树,ZKW线段树实现)
- leetcode题解-289. Game of Life
- MINIMUM COINS题解 codeEval
- “Wishare杯”南邮第九届大学生程序设计竞赛之现场赛 部分题解