J'ai eu la réponse à la question, en comptant le nombre de bits de sets à partir d'ici.calculer le nombre de bits en utilisant la méthode K & R avec la mémoire infinie
How to count the number of set bits in a 32-bit integer?
long count_bits(long n) {
unsigned int c; // c accumulates the total bits set in v
for (c = 0; n; c++)
n &= n - 1; // clear the least significant bit set
return c;
}
Il est simple à comprendre aussi. Et trouvé la meilleure réponse que la méthode Brian Kernighans, posté par hoyhoy ... et il ajoute ce qui suit à la fin.
Notez qu'il s'agit d'une question utilisée lors des entrevues. L'interviewer ajoutera la mise en garde que vous avez "mémoire infinie". Dans ce cas, vous créez essentiellement un tableau de taille 232 et remplissez le nombre de bits pour les nombres à chaque emplacement. Ensuite, cette fonction devient O (1).
Quelqu'un peut-il expliquer comment faire cela? Si j'ai la mémoire infinie ...