357. Contar el número de números con diferentes dígitos: aplicación del principio de la multiplicación

¡Acostúmbrate a escribir juntos! Este es el día 11 de mi participación en el "Nuevo plan diario de Nuggets · Desafío de actualización de abril", haga clic para ver los detalles del evento .

Tema Descripción

Esto es 357 en LeetCode. Contando el número de números donde cada número es diferente , la dificultad es media .

Etiqueta: "Matemáticas"

te da un entero n norte , cuenta y devuelve números con diferentes dígitos x X , donde 0 < = x < 1 0 n 0 <= x < 10^n  _

Ejemplo 1:

输入:n = 2

输出:91

解释:答案应为除去 11、22、33、44、55、66、77、88、99 外,在 0 ≤ x < 100 范围内的所有数字。 
复制代码

Ejemplo 2:

输入:n = 0

输出:1
复制代码

insinuación:

  • 0 < = n < = 8 0 <= norte <= 8

principio de multiplicación

por n = 0 norte = 0 es más especial, haz un juicio especial y devuelve 1 1 _

Para otros casos, ya que no hay líder 0 0 , el número de valores que se pueden seleccionar por el bit más alto es 9 9 , y desde el segundo bit más alto hasta el bit más bajo, el número opcional es de 9 9 comienza a disminuir uno por uno.

Usando el principio de multiplicación, la multiplicación del número de valores opcionales para cada dígito es la longitud de n norte Número de posibles soluciones para números de c u r canalla , mientras que todas las longitudes [ 1 , n ] [1, norte] es la respuesta.

Código:

class Solution {
    public int countNumbersWithUniqueDigits(int n) {
        if (n == 0) return 1;
        int ans = 10;
        for (int i = 2, last = 9; i <= n; i++) {
            int cur = last * (10 - i + 1);
            ans += cur;
            last = cur;
        }
        return ans;
    }
}
复制代码
  • complejidad del tiempo: O ( n ) Sobre)
  • Complejidad del espacio: O ( 1 ) O(1)

Al final

Este es el primer No.357artículo serie comienza el 01/01/2021. A partir de la fecha de inicio, hay 1916 preguntas en LeetCode, algunas de las cuales están bloqueadas. Primero pondremos todas las preguntas sin cerraduras Tema terminado.

En esta serie de artículos, además de explicar las ideas de resolución de problemas, se dará el código más conciso posible. Si se trata de soluciones generales, también se proporcionarán las plantillas de código correspondientes.

Para facilitar a los estudiantes la depuración y el envío de código en la computadora, he establecido un repositorio relacionado: github.com/SharingSour… .

En la dirección del almacén, puede ver el enlace a la solución de la serie de artículos, el código correspondiente de la serie de artículos, el enlace a la pregunta original de LeetCode y otras soluciones preferidas.

Supongo que te gusta

Origin juejin.im/post/7085155001227542536
Recomendado
Clasificación