[Inscripción] -lootcode grupo de tarjetas

Título: Tarjeta de paquetes

Dada una baraja de cartas, cada carta se escriben en un entero.

En este punto, es necesario seleccionar una X digital, por lo que podemos ser barajas completas de acuerdo a las siguientes reglas en uno o más grupos:

Cada grupo tiene X cartas.
Dentro del grupo están escritos el mismo entero en todas las tarjetas.
> = 2 devuelve cierto sólo si X. opcional

 

Ejemplo 1:

Entrada: [1,2,3,4,4,3,2,1]
de salida: true
interpretación: agrupación es [1,1], [2,2], [3,3], [4,4 posible ]
ejemplo 2:

Entrada: [1,1,1,2,2,2,3,3]
Salida: falsa
interpretación: el paquete no cumple los requisitos.
Ejemplo 3:

Entrada: [1]
Salida: falsa
interpretación: el paquete no cumple los requisitos.
Ejemplo 4:

Entrada: [1,1]
de salida: true
interpretación: agrupación es posible [1,1]
Ejemplo 5:

Entrada: [1,1,2,2,2,2]
de salida: true
interpretación: agrupación es posible [1,1], [2,2], [2,2]

consejos:

1 <= deck.length <= 10000
0 <= mazo [i] <10 000


 

ideas:

  Se requerirá que el primero condición del sujeto, en una tarjeta o más grupos, y cada grupo es la misma tarjeta.

  Podemos imaginar que si sólo una tarjeta en cada grupo, entonces no importa cuántas cartas son todos los sub-leyes elegibles.

  Si hay dos cartas en cada grupo, entonces la cantidad total de cada uno de la misma marca debe ser un múltiplo de 2, tienen un sistema de puntos en función de las condiciones.

  Si hay tres cartas de cada grupo, el número total de la misma marca de cada uno debe ser un múltiplo de 3, sólo el sistema de puntos en función de las condiciones.

 

  De la misma manera, estamos buscando es el número de x:

    ★: A recoger y

  1. El número total de tarjetas son todos el mismo múltiplo de elementos Y, es decir, los elementos son divisible por y en
  2.  y x es el número de elementos lo más grande posible

  Obviamente, y es el número de la serie de tarjetas de todo el mismo número de convenciones, x es el máximo común divisor.

 

Los códigos (C):

//求最大公约数
int
gcd ( int x, int y) { int tmp; mientras que (y =! 0 ) { tmp = x; x = y; y = tmp% y; } Retorno x; } Bool hasGroupsSizeX ( int * cubierta, int deckSize) { int conteo [ 10005 ] = { 0 }; int x = - 1 ; para ( int i = 0; i <deckSize; I ++ ) { contar [mazo [i]] ++ ; } Para ( int i = 0 ; i < 10005 ; i ++ ) { si (recuento de [i]> 0 ) { si (x == - 1 ) ans = contar [i]; otra cosa x = gcd (ans, recuento de [i]); } } Si (x> = 2 ) volver verdadero ; volver falsa ; }

 

2020-03-27-19: 03: 11

 

Supongo que te gusta

Origin www.cnblogs.com/Sxccz/p/leetcode_10.html
Recomendado
Clasificación