Maison > développement back-end > tutoriel php > Désamorcer la bombe

Désamorcer la bombe

Barbara Streisand
Libérer: 2024-11-24 16:19:32
original
545 Les gens l'ont consulté

Defuse the Bomb

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.

  • Si k> 0, remplacez le iième nombre par la somme des suivantk nombres.
  • Si k < 0, remplacez le iième nombre par la somme des précédents k nombres.
  • Si k == 0, remplacez le ième nombre par 0.

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 :

  • Entrée : code = [5,7,1,4], k = 3
  • Sortie : [12,10,16,13]
  • Explication : Chaque nombre est remplacé par la somme des 3 nombres suivants. Le code déchiffré est [7 1 4, 1 4 5, 4 5 7, 5 7 1]. Notez que les chiffres s'enroulent.

Exemple 2 :

  • Entrée : code = [1,2,3,4], k = 0
  • Sortie : [0,0,0,0]
  • Explication : Lorsque k vaut zéro, les nombres sont remplacés par 0.

Exemple 3 :

  • Entrée : code = [2,4,9,3], k = -2
  • Sortie : [12,5,6,13]
  • Explication : Le code déchiffré est [3 9, 2 3, 4 2, 9 4]. Notez que les chiffres s'inversent à nouveau. Si k est négatif, la somme est celle des nombres précédents.

Contraintes :

  • n == code.length
  • 1 <= n <= 100
  • 1 <= code[i] <= 100
  • -(n - 1) <= k <= n - 1

Indice :

  1. Comme le tableau est circulaire, utilisez modulo pour trouver le bon index.
  2. Les contraintes sont suffisamment faibles pour une solution par force brute.

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 :

  1. Si k == 0, remplacez tous les éléments par 0.
  2. Si k> 0, remplacez chaque élément par la somme des k éléments suivants dans le tableau circulaire.
  3. Si k < 0, remplacez chaque élément par la somme des k éléments précédents dans le tableau circulaire.

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:

  1. Initialisation :

    • Nous créons un tableau de résultats initialisé avec des zéros en utilisant array_fill.
  2. Gestion k == 0:

    • Si k vaut zéro, le tableau de sortie est simplement rempli de zéros, comme l'exige le problème.
  3. 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.
  4. 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.
  5. 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 :

  • LinkedIn
  • GitHub

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!

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal