假设我们有一个非负整数n。我们必须计算具有唯一数字x的所有数字,其中x的范围是0到10 ^ n。因此,如果数字n为2,则结果将为91,因为我们要查找从0到100的数字,而没有11、22、33、44、55、66、77、88、99。
为了解决这个问题,我们将遵循以下步骤-
如果n为0,则返回1
n:= 10和n中的最小值
如果n为1,则返回10
ans:= 9并ret:= 10
对于我2到n
回答:=回答*(9 – i + 2)
ret:= ret + ans
返回ret
让我们看下面的实现以更好地理解-
#include <bits/stdc++.h> using namespace std; class Solution { public: int countNumbersWithUniqueDigits(int n) { if(n == 0)return 1; n = min(10, n); if(n == 1)return 10; int ans = 9; int ret = 10; for(int i = 2; i<= n; i++){ ans *= (9 - i + 2); ret += ans; } return ret; } }; main(){ Solution ob; cout << (ob.countNumbersWithUniqueDigits(3)); }
3
输出结果
739