Usa dos métodos para resolver el problema de "contar el número de números con diferentes dígitos"

9. Cuenta la cantidad de números con números diferentes

9.1 Requisitos para el título

Dado un entero n, cuenta y devuelve la cantidad de números x con diferentes dígitos, donde 0 <= x < 10n.

示例 1:
输入:n = 2
输出:91
解释:答案应为除去 11、22、33、44、55、66、77、88、99 外,在 0 ≤ x < 100 范围内的所有数字。 

示例 2:
输入:n = 0
输出:1

提示:
0 <= n <= 8

Fuente: LeetCode
Enlace: https://leetcode-cn.com/problems/count-numbers-with-unique-digits

9.2, ideas para resolver problemas

el primer método:

Cuando n=0, el valor es solo uno, que no es igual;
cuando n=1, el valor es [0,9], y los números de 10 dígitos no son iguales;
cuando n>1, hay una fórmula Por favor agregue la descripción de la imagen, que se puede calcular de acuerdo con la fórmula calcular.

El segundo método:

Usa el medidor de golpes directamente.

9.3 Algoritmos

el primer método

class Solution {
    
    
    public int countNumbersWithUniqueDigits(int n) {
    
    
        //n=0
        if(n == 0){
    
    
            return 1;
        }
        //n=1
        if(n == 1){
    
    
            return 10;
        }
        //n>1
        int count = 9,ans = 10,a = 9;
        while(n > 1 && count > 0){
    
    
            a *= count;
            ans += a;
            count--;
            n--;
        }
        return ans;
    }
}

el segundo metodo

class Solution {
    
    
    public int countNumbersWithUniqueDigits(int n) {
    
    
        int [] array = {
    
    1,10,91,739,5275,32491,168571,712891,2345851};
        return array[n];
    }
}

Supongo que te gusta

Origin blog.csdn.net/qq_52916408/article/details/124109005
Recomendado
Clasificación