2601. Opération de soustraction première
Difficulté :Moyen
Sujets :Tableau, mathématiques, recherche binaire, gourmand, théorie des nombres
Vous recevez un tableau de nombres entiers indexé à 0 de longueur n.
Vous pouvez effectuer l'opération suivante autant de fois que vous le souhaitez :
Renvoyer true si vous pouvez faire de nums un tableau strictement croissant en utilisant l'opération ci-dessus et false sinon.
Un tableau strictement croissant est un tableau dont chaque élément est strictement supérieur à son élément précédent.
Exemple 1 :
Exemple 2 :
Exemple 3 :
Contraintes :
Indice :
Solution :
Nous devons décomposer l'algorithme et l'adapter à la syntaxe et aux fonctionnalités PHP. La solution passe principalement par les étapes suivantes :
Implémentons cette solution en PHP : 2601. Opération de soustraction première
primeSubOperation([4, 9, 6, 10]) ? 'true' : 'false'; // Output: true echo $solution->primeSubOperation([6, 8, 11, 12]) ? 'true' : 'false'; // Output: true echo $solution->primeSubOperation([5, 8, 3]) ? 'true' : 'false'; // Output: false ?>Explication:
primeSubOperation : parcourt chaque élément en nombres et vérifie si nous pouvons rendre chaque élément supérieur au précédent en soustrayant un nombre premier approprié.
- Nous utilisons $this->findLargestPrimeLessThan pour trouver le plus grand nombre premier inférieur à num - prevNum.
- Si un tel nombre premier existe, nous le soustrayons du nombre actuel.
- Si après soustraction du nombre premier, le num actuel n'est pas supérieur au prevNum, nous renvoyons false.
- Sinon, nous mettons à jour prevNum avec le numéro actuel.
sieveEratosthène : génère tous les nombres premiers jusqu'à 1000 à l'aide du tamis d'Eratosthène et les renvoie sous forme de tableau.
findLargestPrimeLessThan : utilise la recherche binaire pour trouver le plus grand nombre premier inférieur à une limite donnée, garantissant ainsi que nous trouvons le nombre premier optimal pour la soustraction.
Analyse de complexité
Cette solution renverra vrai ou faux selon qu'il est possible de rendre les nombres strictement croissants en effectuant les opérations de soustraction de nombres premiers décrites.
Liens de contact
Si vous avez trouvé cette série utile, pensez à donner une étoile au référentiel sur GitHub ou à partager la publication sur vos réseaux sociaux préférés ?. Votre soutien signifierait beaucoup pour moi !
Si vous souhaitez du contenu plus utile comme celui-ci, n'hésitez pas à me suivre :
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!