行业知识
[LeetBook]【学习日记】图书整理 II——用两个栈实现队列
题目
��书整理 II
()读者来到图书馆排队借还书,图书管理员使用两个书车来完成整理借还书的任务。书车中的书从下往上叠加存放,图书管理员每次只能拿取书车顶部的书。排队的读者会有两种操作:
- push(bookID):把借阅的书籍还到图书馆。
- pop():从图书馆中借出书籍。
为了保持图书的顺序,图书管理员每次取出供读者借阅的书籍是最早归还到图书馆的书籍。你需要返回每次读者借出书的值。
()如果没有归还的书可以取出,返回 -1。
示例 1:
输入: [“BookQueue”, “push”, “push”, “pop”] [[], [1], [2], []]
输出:[null,null,null,1] 解释: MyQueue myQueue = new MyQueue();
myQueue.push(1); // queue is: [1] myQueue.push(2); // queue is: [1, 2]
(leftmost is front of the queue) myQueue.pop(); // return 1, queue is
[2]
提示:
1 vector } void appendTail(int value) { vec.push_back(value); } int deleteHead() { if(head return vec[head++]; } return -1; }};/** * Your CQueue object will be instantiated and called as such: * CQueue* obj = new CQueue(); * obj-appendTail(value); * int param_2 = obj-deleteHead(); */ stack} void appendTail(int value) { a.push(value); } int deleteHead() { if(a.empty() && b.empty()) return -1; if(b.empty() && !a.empty()){ while(!a.empty()){ b.push(a.top()); a.pop(); } } int temp = b.top(); b.pop(); return temp; }};/** * Your CQueue object will be instantiated and called as such: * CQueue* obj = new CQueue(); * obj-appendTail(value); * int param_2 = obj->deleteHead(); */