Descripción LeetCode 914. Tarjeta de paquetes C ++

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;

    }
};
Publicados 153 artículos originales · ganado elogios 140 · Vistas a 20000 +

Supongo que te gusta

Origin blog.csdn.net/qq_43422111/article/details/105136534
Recomendado
Clasificación