[スタックとキュー] Jianzhi オファー 09. 2 つのスタックでキューを実現する

タイトル説明:
2 つのスタックを持つキューを実装します。キューの宣言は次のとおりです.2つの関数appendTailとdeleteHeadを実装して、それぞれキューの末尾に整数を挿入し、キューの先頭にある整数を削除する機能を完了してください. (キューに要素がない場合、deleteHead 操作は -1 を返します)

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

解決策:行き詰まった点は、削除するときにスタック1の要素をスタック2に転送することだけを検討し、追加テイルするときに要素を追加することだけを検討する必要があるということです。

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:
            while self.stack_in:
                self.stack_out.append(self.stack_in.pop())
            return self.stack_out.pop() if self.stack_out else -1
        else:
            return self.stack_out.pop()




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

おすすめ

転載: blog.csdn.net/Rolandxxx/article/details/128881502