逐日算法一练:剑指offer——栈与队列篇(1)

[复制链接]
发表于 2025-12-23 17:11:14 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

×
1.图书整理II

         读者来到图书馆列队借还书,图书管理员使用两个书车来完成整理借还书的使命。书车中的书从下往上叠加存放,图书管理员每次只能拿取书车顶部的书。列队的读者会有两种操纵:

      
  • push(bookID):把借阅的册本还到图书馆。  
  • pop():从图书馆中借出册本。
为了保持图书的次序,图书管理员每次取出供读者借阅的册本是 最早 归还到图书馆的册本。你须要返回 每次读者借出书的值
假如没有归还的书可以取出,返回 -1 。
示例 1:
  1. <strong>输入:</strong>
  2. ["BookQueue", "push", "push", "pop"]
  3. [[], [1], [2], []]
  4. <strong>输出:</strong>[null,null,null,1]
  5. <strong>解释:
  6. </strong>MyQueue myQueue = new MyQueue();
  7. myQueue.push(1); // queue is: [1]
  8. myQueue.push(2); // queue is: [1, 2] (leftmost is front of the queue)
  9. 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企服之家,中国第一个企服评测及软件市场,开放入驻,技术点评得现金
回复

使用道具 举报

登录后关闭弹窗

登录参与点评抽奖  加入IT实名职场社区
去登录
快速回复 返回顶部 返回列表