Leetcode C++剣指Offer 09.2つのスタックでキューを実装
5178 ワード
これは私が10年も忘れないテーマかもしれません.誰かが私に2回も話してくれたので、私は理解していません.その日はきっと満腹ではありません.脳は酸素が欠けています.
タイトル
2つのスタックで1つのキューを実現します.キューの宣言は以下のとおりです.2つの関数appendTailとdeleteHeadを実装し、キューの末尾に整数を挿入し、キューの先頭に整数を削除する機能をそれぞれ完了してください.(キューに要素がない場合はdeleteHead操作は-1を返します)
例1:
入力:[[CQueue],[appendTail],[deleteHead],[deleteHead][[],[3],[],[],[]]出力:[null,null,3,-1]例2:
入力:[[CQueue],[deleteHead],[appendTail],[appendTail],[appendTail],[deleteHead],[],[[],[5],[],[],[]]]出力:[null,-1,null,null,null,null,5,2]ヒント:
1<=values<=10000 appendTail、deleteHeadを最大10000回呼び出す
ソース:力ボタン(LeetCode)リンク:https://leetcode-cn.com/problems/yong-liang-ge-zhan-shi-xian-dui-lie-lcof著作権はインターネットの所有に帰属する.商業転載は公式の授権に連絡してください.非商業転載は出典を明記してください.
構想 2 2つのスタック実装キュー、1つのスタックAは要素を配置し、1つのスタックBは をポップアップするために使用される桟Bは空で、AのはすべてBまで弾きます;Bは空ではなく、 を直接弾くことができます.
コード#コード#
タイトル
2つのスタックで1つのキューを実現します.キューの宣言は以下のとおりです.2つの関数appendTailとdeleteHeadを実装し、キューの末尾に整数を挿入し、キューの先頭に整数を削除する機能をそれぞれ完了してください.(キューに要素がない場合はdeleteHead操作は-1を返します)
例1:
入力:[[CQueue],[appendTail],[deleteHead],[deleteHead][[],[3],[],[],[]]出力:[null,null,3,-1]例2:
入力:[[CQueue],[deleteHead],[appendTail],[appendTail],[appendTail],[deleteHead],[],[[],[5],[],[],[]]]出力:[null,-1,null,null,null,null,5,2]ヒント:
1<=values<=10000 appendTail、deleteHeadを最大10000回呼び出す
ソース:力ボタン(LeetCode)リンク:https://leetcode-cn.com/problems/yong-liang-ge-zhan-shi-xian-dui-lie-lcof著作権はインターネットの所有に帰属する.商業転載は公式の授権に連絡してください.非商業転載は出典を明記してください.
構想
コード#コード#
class CQueue {
public:
stack<int> one;
stack<int> two;
CQueue() {
}
void appendTail(int value) {
one.push(value);
}
int deleteHead() {
if (two.empty()) {
while(!one.empty()) {
two.push(one.top());
one.pop();
}
}
if (two.empty())
return -1;
int res = two.top();
two.pop();
return res;
}
};
/**
* Your CQueue object will be instantiated and called as such:
* CQueue* obj = new CQueue();
* obj->appendTail(value);
* int param_2 = obj->deleteHead();
*/