225. 用队列实现栈

✔做题思路 or 感想 :

  • 用队列实现栈,仅仅用一个队列就可以了

    • push:直接push进队列就好

    • pop:把队首加到队尾,直到最开始的队尾变成了队首,这样就可以取最开始的队尾的值了。

    • peek:这个和pop的操作差不多,但是最后的操作有别。在最后取完队首(即是最开始的栈顶)后,要再把队首加到队尾去,还原成一开始的队列!不然最开始的队首就变成了栈顶了!

      class MyStack {
      public:
          MyStack() {
      
          }
          queue<int>que;
          void push(int x) {
              que.push(x);
          }
          
          int pop() {
              int size = que.size() - 1;
              while (size--) {
                  int front = que.front();
                  que.pop();
                  que.push(front);
              }
              int result = que.front();
              que.pop();
              return result;
          }
          
          int top() {
              int size = que.size() - 1;
              while (size--) {
                  int front = que.front();
                  que.pop();
                  que.push(front);
              }
              int result = que.front();	//这里记得把队列还原回一开始的队列!!!
              que.push(result);
              que.pop();
              return result;
          }
          
          bool empty() {
              return que.empty();
          }
      };
      
      /**
       * Your MyStack object will be instantiated and called as such:
       * MyStack* obj = new MyStack();
       * obj->push(x);
       * int param_2 = obj->pop();
       * int param_3 = obj->top();
       * bool param_4 = obj->empty();
       */
      
posted @   北原春希  阅读(19)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 零经验选手,Compose 一天开发一款小游戏!
· 因为Apifox不支持离线,我果断选择了Apipost!
· 通过 API 将Deepseek响应流式内容输出到前端
点击右上角即可分享
微信分享提示