leetcode_1012
Last updated
Was this helpful?
Last updated
Was this helpful?
Given a positive integer N, return the number of positive integers less than or equal to N that have at least 1 repeated digit.
Example 1:
Input: 20 Output: 1 Explanation: The only positive number (<= 20) with at least 1 repeated digit is 11. Example 2:
Input: 100 Output: 10 Explanation: The positive numbers (<= 100) with atleast 1 repeated digit are 11, 22, 33, 44, 55, 66, 77, 88, 99, and 100. Example 3:
Input: 1000 Output: 262
Note:
1 <= N <= 10^9
dynamic programming
reference :
It's hard to directly count the number of integers with duplicate digits, however, counting the number of integers without duplicate digit is much easier.
Thus the answer equals to N - num_with_no_duplicate
dp[i]
represents the current checking numbers's prefix is str(N)[:i)
.
Basically, we are checking and counting all numbers in the order of prefix.