JIAKAOBO

LeetCode

venmo
wechat

感谢赞助!

  • ㊗️
  • 大家
  • offer
  • 多多!

Problem

Given an integer n, return the count of all numbers with unique digits, x, where 0 <= x < 10n.

Example 1:

Input: n = 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

Example 2:

Input: n = 0
Output: 1

Code

class Solution {
    public int countNumbersWithUniqueDigits(int n) {
        int res = 0;
        for(int i = 1; i <= n; i++) {
            res += helper(i);
        }

        return res + 1;
    }

    private int helper(int n) {
        int res = 9;
        int base = 9;
        while(n > 1 && base > 1) {
            res *= base;
            base--;
            n--;
        }

        return res;
    }
}