Descripción LeetCode 914. Tarjeta de paquetes C ++
Dificultad simplemente
da 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
class Solution {
public:
bool hasGroupsSizeX(vector<int>& deck) {
sort(deck.begin(),deck.end());
for(int i = 2; i <= deck.size(); i++){
//如果不能整除,则直接下一个
if(deck.size() % i != 0)
continue;
bool flag = true;
for(int j = 0; j < deck.size()/i; j++){
for(int k = j * i; k < (j+1) * i && k < deck.size(); k++){
if(deck[k] != deck[j*i]){
//如果不和第一个数一样,则退出
flag = false;
break;
}
if(!flag)
break;
}
}
if(flag)
return true;
}
return false;
}
};