LeetCodeEasy- [Question d'entretien 09. Mise en œuvre de la file d'attente avec deux piles]

Implémentez une file d'attente avec deux piles. La déclaration de la file d'attente est la suivante: veuillez implémenter ses deux fonctions appendTail et deleteHead pour terminer les fonctions d'insertion d'entiers à la fin de la file d'attente et de suppression d'entiers en tête de la file d'attente. (S'il n'y a aucun élément dans la file d'attente, l'opération deleteHead renvoie -1)

Exemple 1:

输入 :
["CQueue", "appendTail", "deleteHead", "deleteHead"]
[[], [3], [], []]
输出 : [null, null, 3, -1]


Exemple 2:

输入 :
["CQueue", "deleteHead", "appendTail", "appendTail", "deleteHead", "deleteHead"]
[[], [], [5], [2], [], []]
输出 : [null, -1, null, null, 5,2]


Astuces:

1 <= valeurs <= 10000
jusqu'à 10000 appels seront effectués pour appendTail et deleteHead

Source: lien LeetCode (LeetCode)
: https://leetcode-cn.com/problems/yong-liang-ge-zhan-shi-xian-dui-lie-lcof
. Veuillez contacter l'autorisation officielle pour la réimpression commerciale, et veuillez indiquer la source de la réimpression non commerciale.

Idée 1: deux piles: pile de données + pile auxiliaire

Il faut que l'ordre de la pile et de la file d'attente soit exactement l'inverse, alors les deux piles sont exactement les mêmes (inversées deux fois).

class CQueue:

    def __init__(self):
        self.stack1 = [] # 存数
        self.stack2 = [] # 

    def appendTail(self, value: int) -> None:
        while self.stack1 != []:
            self.stack2.append(self.stack1.pop())
        self.stack2.append(value)
        while self.stack2 != []:
            self.stack1.append(self.stack2.pop())
        return None
    def deleteHead(self) -> int:
        if self.stack1 == []:
            return -1
        else:
            return self.stack1.pop()


# Your CQueue object will be instantiated and called as such:
# obj = CQueue()
# obj.appendTail(value)
# param_2 = obj.deleteHead()

Idée 2: deux piles: pile de données + pile auxiliaire (améliorée)

class CQueue:

    def __init__(self):
        self.stack_in = [] 
        self.stack_out = []

    def appendTail(self, value: int) -> None:
        self.stack_in.append(value)

    def deleteHead(self) -> int:
        if not self.stack_out:
            if not self.stack_in:
                return -1
            while self.stack_in:
                self.stack_out.append(self.stack_in.pop())
        return self.stack_out.pop()

 

Publié 314 articles originaux · 22 éloges · 20 000+ vues

Je suppose que tu aimes

Origine blog.csdn.net/qq_39451578/article/details/105341871
conseillé
Classement