python: implémenter une 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, qui complètent respectivement les fonctions d'insertion d'entiers en fin de file d'attente et de suppression d'entiers en tête de file d'attente. (S'il n'y a aucun élément dans la file d'attente, l'opération deleteHead renvoie -1)

La pile 1 est utilisée pour stocker de nouveaux éléments, et la pile 2 est utilisée pour faire apparaître les anciens éléments.
AppendTail: pousser directement les nouveaux éléments sur la pile 1
deleteHead: pop directement les éléments de la pile 2; si la pile 2 est vide, tous les éléments de la pile 1 seront être poussé dans la pile 2; si la pile 1 est également vide, retourne -1

class ST_Queue():
    def __init__(self):
        self.s1=[]
        self.s2=[]
    def appendTail(self,value):
        self.s1.append(value)
    def deleteHead(self):
        if len(self.s2)==0:
            if len(self.s1)==0:
                return -1
            while len(self.s1)>0:
                self.s2.append(self.s1.pop())
        return self.s2.pop()

if __name__=="__main__":
    tes=ST_Queue()
    for i in range(5):
        tes.appendTail(i)
    print("s1:",tes.s1)
    print("s2:",tes.s2)

    tes.deleteHead()
    tes.deleteHead()
    print("s1:",tes.s1)
    print("s2:",tes.s2)

Analyse de complexité: Complexité
temporelle:
Enqueue: O (1)
Dequeue: O (1)
Complexity space:
Enqueue: O (n)
Dequeue: O (1)

Je suppose que tu aimes

Origine blog.csdn.net/liulanba/article/details/115163892
conseillé
Classement