Diretório do artigo
1. Título Fonte
Links: 914. Cartão de agrupamento
Fonte: LeetCode
2. Descrição título
3. Título determinação
MÉTODO A: Método analógico convencional + + gcd
simples título, necessidade abstrato de entender, simplesmente sob a idéia:
- Você primeiro precisa ser repetido o número de estatísticas, usando
map
estruturas de dados pode ser diretamente estatísticas, o mais conveniente e eficaz. Há também uma matriz usando o pode contar. Claro,sort
pós-processamento é também possível complexidade, alto tempo. Muitos método de processamento de dados, não-chave. - Contar o número de repetições para obter todos os algarismos significativos, então o pacote
x
é qualquer repetição destes não-convenção um número 1 , devido a esta pré-feitogcd
maior método divisor comum para ser utilizado directamente, e com a eficiência de divisão interna também é removido alta. Pode também procurar para enumerar o número de convenções por meio da violência, a complexidade de tempo é maior.
Veja o código abaixo:
// 执行用时 :44 ms, 在所有 C++ 提交中击败了6.40%的用户
// 内存消耗 :16.9 MB, 在所有 C++ 提交中击败了5.71%的用户
class Solution {
public:
bool hasGroupsSizeX(vector<int>& deck) {
map<int, int> m;
for (int i = 0; i < deck.size(); i++)
m[deck[i]]++;
int g = m.begin()->second;
for (auto i = m.begin(); i != m.end(); i++)
g = gcd(g, i->second);
return g >= 2;
}
};
// 简约风
class Solution {
public:
bool hasGroupsSizeX(vector<int>& deck) {
map<int, int> m;
for (auto& e : deck) m[e]++;
int g = m.begin()->second;
for (auto& e : m) g = gcd(g, e.second);
return g >= 2;
}
};