【シロ用pythonブラシLeetcode】剣指Offer 09.2つのスタックでキューを実装
1799 ワード
剣指Offer 09.2つのスタックでキューを実装
タイトルの説明
2つのスタックで1つのキューを実現します.キューの宣言は以下のとおりです.2つの関数appendTailとdeleteHeadを実装し、キューの末尾に整数を挿入し、キューの先頭に整数を削除する機能をそれぞれ完了してください.(キューに要素がない場合はdeleteHead操作は-1を返します)
例:
入力:[[CQueue],[appendTail],[deleteHead],[deleteHead][[],[3],[],[],[]]出力:[null,null,3,-1]
入力:[[CQueue],[deleteHead],[appendTail],[appendTail],[appendTail],[deleteHead],[],[[],[5],[],[],[]]]出力:[null,-1,null,null,null,null,5,2]
ヒント: 1 <= values <= 10000 appendTail、deleteHeadを最大10,000回呼び出す 問題を解く構想.
また古い顔を塗って、また思わず笑って声を出して、この2,3日欧気はこんなに爆発しましたかはははは.面接で必ず出てくる問題は、剣指offerでも上位にあり、よく知っている私はテーマの説明をしたくないので、フォーマットを調整して面倒なことを言って、次は直接スクリーンショットを考えることができます.
構想は通常の構想で、どうせ問題の要求の中で構想を限定して死んだ:2つのスタックでキューを実現する.簡単に言えば、2つのスタックを構築し、stack 1は要素がキューに入ることを担当し、stack 2は要素がキューから出ることを担当し、2つのスタックはそれぞれ1つの機能しか担当しておらず、混在してはいけない.強調しなければならないのは、スタックを出るとき、stack 2が空の場合、whileループでstack 1内のすべての要素を持ってきてください.そうしないと、要素がスタックに入ると、順番が乱れます.詳細は何もありませんが、テーマに小さな要求があります.キューに要素がなければ、キューを呼び出すときは-1に戻り、追加するのを忘れないでください.
問題解決コード:
以上は私、1つのまじめな白(大神达はコードを见ても感じたはずです)に対して、この问题の理解に対して、みんなを歓迎して讨论して、読むことに感谢します.
原題リンク:
https://leetcode-cn.com/problems/yong-liang-ge-zhan-shi-xian-dui-lie-lcof/
タイトルの説明
2つのスタックで1つのキューを実現します.キューの宣言は以下のとおりです.2つの関数appendTailとdeleteHeadを実装し、キューの末尾に整数を挿入し、キューの先頭に整数を削除する機能をそれぞれ完了してください.(キューに要素がない場合はdeleteHead操作は-1を返します)
例:
入力:[[CQueue],[appendTail],[deleteHead],[deleteHead][[],[3],[],[],[]]出力:[null,null,3,-1]
入力:[[CQueue],[deleteHead],[appendTail],[appendTail],[appendTail],[deleteHead],[],[[],[5],[],[],[]]]出力:[null,-1,null,null,null,null,5,2]
ヒント:
また古い顔を塗って、また思わず笑って声を出して、この2,3日欧気はこんなに爆発しましたかはははは.面接で必ず出てくる問題は、剣指offerでも上位にあり、よく知っている私はテーマの説明をしたくないので、フォーマットを調整して面倒なことを言って、次は直接スクリーンショットを考えることができます.
構想は通常の構想で、どうせ問題の要求の中で構想を限定して死んだ:2つのスタックでキューを実現する.簡単に言えば、2つのスタックを構築し、stack 1は要素がキューに入ることを担当し、stack 2は要素がキューから出ることを担当し、2つのスタックはそれぞれ1つの機能しか担当しておらず、混在してはいけない.強調しなければならないのは、スタックを出るとき、stack 2が空の場合、whileループでstack 1内のすべての要素を持ってきてください.そうしないと、要素がスタックに入ると、順番が乱れます.詳細は何もありませんが、テーマに小さな要求があります.キューに要素がなければ、キューを呼び出すときは-1に戻り、追加するのを忘れないでください.
問題解決コード:
class CQueue:
def __init__(self):
self.stack1 = [] #
self.stack2 = [] #
def appendTail(self, value: int) -> None:
self.stack1.append(value)
def deleteHead(self) -> int:
if not self.stack1 and not self.stack2:
return -1
if not self.stack2:
while self.stack1:
self.stack2.append(self.stack1.pop())
return self.stack2.pop()
# Your CQueue object will be instantiated and called as such:
# obj = CQueue()
# obj.appendTail(value)
# param_2 = obj.deleteHead()
以上は私、1つのまじめな白(大神达はコードを见ても感じたはずです)に対して、この问题の理解に対して、みんなを歓迎して讨论して、読むことに感谢します.
原題リンク:
https://leetcode-cn.com/problems/yong-liang-ge-zhan-shi-xian-dui-lie-lcof/