1652. Désamorcer la bombe
Difficulté :Facile
Sujets : Tableau, fenêtre coulissante
Vous avez une bombe à désamorcer, et votre temps est compté ! Votre informateur vous fournira un code tableau circulaire de longueur n et une clé k.
Pour décrypter le code, vous devez remplacer chaque numéro. Tous les numéros sont remplacés simultanément.
Comme le code est circulaire, l'élément suivant du code[n-1] est le code[0], et l'élément précédent du code[0] est le code[n-1].
Étant donné le code du tableau circulaire et une clé entière k, renvoyez le code déchiffré pour désamorcer la bombe!
Exemple 1 :
Exemple 2 :
Exemple 3 :
Contraintes :
Indice :
Solution :
Nous pouvons implémenter une fonction qui parcourt le tableau de codes et calcule la somme des nombres appropriés en fonction de la valeur de k.
L'approche générale sera la suivante :
La nature circulaire du tableau signifie que pour les indices qui dépassent les limites du tableau, vous pouvez utiliser modulo (%) pour "enrouler" le tableau.
Implémentons cette solution en PHP : 1652. Désamorcer la bombe
Explication:
Initialisation :
- Nous créons un tableau de résultats initialisé avec des zéros en utilisant array_fill.
Gestion k == 0:
- Si k vaut zéro, le tableau de sortie est simplement rempli de zéros, comme l'exige le problème.
Itération à travers le tableau :
- Pour chaque index i du tableau :
- Si k> 0, additionnez les k éléments suivants en utilisant l'arithmétique modulo pour envelopper.
- Si k < 0, additionnez le |k| précédent éléments utilisant l'arithmétique modulo avec un décalage pour gérer les indices négatifs.
Modulo Arithmétique :
- Nous utilisons ($i $j) % $n pour revenir au début du tableau lors de l'accès à des indices supérieurs à n - 1.
- De même, ($i - $j $n) % $n gère le retour à la ligne pour les indices négatifs.
Complexité :
- Complexité temporelle : O(n . |k|), où n est la taille du tableau et |k| est la valeur absolue de k.
- Complexité spatiale : O(n) pour le tableau de résultats.
Sorties :
Les exemples fournis correspondent aux résultats attendus. Faites-moi savoir si vous avez besoin d'explications supplémentaires ou d'optimisations !
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!