Ci-dessous peut être l'une des solutions. Je suis juste un débutant. S'il vous plaît pardonnez-moi s'il y a un problème dans mon algorithme.
Supposons que le tableau d'entrée soit inputArr et supposons que la plage de valeurs des éléments de inputArr
est >= 0, <= M
.
Créez un tableau booléen, à savoir presenceOfInputValue, de taille, M + 1, et tous ses éléments sont initialisés pour être faux. Une fois qu'une valeur x est trouvée présente dans inputArr
, presenceOfInputValue[x] = true
.
Cela signifie que si presenceOfInputValue[x] == true
, x
est présent dans le tableau d'entrée.
Let double Bi = p/arr[i].
boucle pour obtenir tous les Bi et mis en place la presenceOfInputValue, et si Bi est un entier, vérifiez si elle est présente dans inputArr en vérifiant si presenceOfInputValue[i] == true
.
P.S. Supposons M = 256^4(4bytes) - 1
, presenceOfInputValue occupera 256^4/8/1000/1000 ~= 16.8MB
cela sonne vraiment comme les devoirs. –
Existe-t-il des restrictions sur les types de nombres (tels que juste des entiers, juste des entiers positifs, etc.)? –
aucune restriction sur le nombre. – TopCoder