马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?立即注册
×
1.图书整理II
读者来到图书馆列队借还书,图书管理员使用两个书车来完成整理借还书的使命。书车中的书从下往上叠加存放,图书管理员每次只能拿取书车顶部的书。列队的读者会有两种操纵:
- push(bookID):把借阅的册本还到图书馆。
- pop():从图书馆中借出册本。
为了保持图书的次序,图书管理员每次取出供读者借阅的册本是 最早 归还到图书馆的册本。你须要返回 每次读者借出书的值 。
假如没有归还的书可以取出,返回 -1 。
示例 1:
- <strong>输入:</strong>
- ["BookQueue", "push", "push", "pop"]
- [[], [1], [2], []]
- <strong>输出:</strong>[null,null,null,1]
- <strong>解释:
- </strong>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 <= bookID <= 10000
- 最多会对 push、pop 举行 10000 次调用
用两个栈实现队列操纵总结
标题通过两个栈的共同,实现队列的两大操纵:队尾插入(appendTail)和队首删除(deleteHead)。以下是实现逻辑的具体总结。
焦颔首脑
- 使用两个栈 A 和 B:
- 栈 A:用于生存新插入的元素(队尾操纵)。
- 栈 B:用于生存倒序的元素(队首操纵)。
- 倒序逻辑:
- 当 B 为空时,将 A 中全部元素出栈并入栈到 B,使 B 中的次序与队列的次序划一。
- 操纵分工:
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!qidao123.com:ToB企服之家,中国第一个企服评测及软件市场,开放入驻,技术点评得现金 |