Skip to content

Commit 9bb11cd

Browse files
authored
Update count-numbers-with-unique-digits.py
1 parent 3645f08 commit 9bb11cd

File tree

1 file changed

+21
-5
lines changed

1 file changed

+21
-5
lines changed

Python/count-numbers-with-unique-digits.py

Lines changed: 21 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -9,9 +9,25 @@ def countNumbersWithUniqueDigits(self, n):
99
"""
1010
if n == 0:
1111
return 1
12-
count, fk = 10, 9
13-
for k in xrange(2, n+1):
14-
fk *= 10 - (k-1)
15-
count += fk
16-
return count
12+
result = cnt = 1
13+
for k in xrange(n-1):
14+
cnt *= 9-k
15+
result += cnt
16+
return 1+9*result
1717

18+
19+
# Time: O(n)
20+
# Space: O(n)
21+
class Solution2(object):
22+
def countNumbersWithUniqueDigits(self, n):
23+
"""
24+
:type n: int
25+
:rtype: int
26+
"""
27+
fact = [1]*2
28+
def nPr(n, k):
29+
while len(fact) <= n: # lazy initialization
30+
fact.append(fact[-1]*len(fact))
31+
return fact[n]//fact[n-k]
32+
33+
return 1+9*sum(nPr(9, i) for i in xrange(n))

0 commit comments

Comments
 (0)