Salut les amis ! Aujourd'hui, j'ai résolu trois problèmes sur LeetCode : Fenêtre coulissante maximale, Implémentation de file d'attente avec pile et Carrés parfaits.
Ces problèmes sont parfaits pour améliorer nos capacités de réflexion logique. Laissez-moi vous expliquer la logique de chaque problème.
Le premier problème Fenêtre coulissante maximale. Le problème indique que nous disposons d’un tableau de nombres et d’une fenêtre de taille k. Nous ne pouvons voir que k éléments depuis la fenêtre. La fenêtre commencera à glisser du premier élément au dernier élément du tableau en fonction de la taille de la fenêtre. Pour chaque diapositive de fenêtre, nous devons renvoyer le nombre maximum.
Nous pouvons résoudre ce problème de deux manières en fonction de ma compréhension. La première approche consiste à utiliser une boucle for imbriquée : une boucle for pour parcourir le tableau et l'autre boucle for consiste à garder une trace de k éléments et nous utiliserons max pour trouver le nombre maximum dans ces k éléments, puis nous créons une liste avec tous les nombres maximum et renvoie cette liste.
La deuxième approche consiste à utiliser le retrait de la file d'attente. Dequeue peut gérer les opérations push, pop et top aux deux extrémités (première et dernière). Nous utiliserons dequeue pour stocker les indices du nombre maximum pour chaque k (taille de la fenêtre) dans le tableau. Chaque fois que la taille de la fenêtre dépasse, nous retirerons un index spécifique de la file d'attente. De cette façon, nous renverrons tous les nombres maximum dans une liste.
Le deuxième problème Implémenter la file d'attente avec la pile. Dans ce problème, nous pouvons utiliser deux piles pour obtenir la fonctionnalité de file d'attente. disons que nous avons la pile un et la pile deux. Chaque fois qu'il y a une opération de poussée, nous pouvons la pousser pour en empiler une. Pour les opérations pop et top, nous vérifions si la pile deux est vide. Si c'est le cas, nous déplacerons tous les éléments de la pile un vers la pile deux. Sinon, nous appliquons directement les opérations pop ou top sur la pile deux. De cette façon, nous pouvons implémenter la file d'attente à l'aide de deux piles.
Le troisième problème Carrés parfaits. Dans ce problème, on nous donne un nombre d’entrée et nous devons trouver le nombre minimum de carrés parfaits requis pour résumer ce nombre d’entrée. Nous pouvons résoudre ce problème en initialisant deux tableaux. Un tableau sert à stocker tous les carrés parfaits inférieurs au nombre d'entrée, et l'autre est utilisé pour garder une trace du nombre minimum de carrés parfaits qui totalisent pour donner le nombre d'entrée. De cette façon, vous pouvez résoudre efficacement le problème.
J'espère que mon expérience sera utile.
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!