首页 > 其他分享 >232.用栈实现队列

232.用栈实现队列

时间:2022-12-11 15:44:59浏览次数:74  
标签:队列 back len queue 用栈 MyQueue stack 232

232.用栈实现队列

力扣题目链接(opens new window)

使用栈实现队列的下列操作:

push(x) -- 将一个元素放入队列的尾部。
pop() -- 从队列首部移除元素。
peek() -- 返回队列首部的元素。
empty() -- 返回队列是否为空。

示例:

MyQueue queue = new MyQueue();
queue.push(1);
queue.push(2);
queue.peek();  // 返回 1
queue.pop();   // 返回 1
queue.empty(); // 返回 false

说明:

  • 你只能使用标准的栈操作 -- 也就是只有 push to top, peek/pop from top, size, 和 is empty 操作是合法的。
  • 你所使用的语言也许不支持栈。你可以使用 list 或者 deque(双端队列)来模拟一个栈,只要是标准的栈操作即可。
  • 假设所有操作都是有效的 (例如,一个空的队列不会调用 pop 或者 peek 操作)
type MyQueue struct {
    stack []int
    back  []int
}

/** Initialize your data structure here. */
func Constructor() MyQueue {
    return MyQueue{}
}

/** Push element x to the back of queue. */
func (q *MyQueue) Push(x int) {
    
    q.stack = append(q.stack, x)
}
func (q *MyQueue) in2out() {
    for len(q.stack)!=0{
        q.back=append(q.back,q.stack[len(q.stack)-1])
        q.stack=q.stack[:len(q.stack)-1]
    }
   
}
/** Removes the element from in front of queue and returns that element. */
func (q *MyQueue) Pop() int {
    if len(q.back)==0{
      q.in2out()  
    }
    
    val:=q.back[len(q.back)-1]
    q.back=q.back[:len(q.back)-1]
    return val
    
}

/** Get the front element. */
func (this *MyQueue) Peek() int {
    val := this.Pop()
    if val == 0 {
        return 0
    }
    this.back = append(this.back, val)
    return val
}

/** Returns whether the queue is empty. */
func (this *MyQueue) Empty() bool {
    return len(this.stack) == 0 && len(this.back) == 0
}

标签:队列,back,len,queue,用栈,MyQueue,stack,232
From: https://www.cnblogs.com/suehoo/p/16973752.html

相关文章

  • [数学记录]P1232 树的计数
    题意:给出一棵树的dfs序和bfs序,求所有可能的原树的高度平均值\(n\leq2\cdot10^5\)首先把bfs序变成\(1\ton\),这样就需要把原树上的节点分成若干层。设\(......
  • 队列(代码源)
    第一题队列#include<bits/stdc++.h>usingnamespacestd;constintN=100010;intq[N];intfront=1,rear=0;intmain(){ intop;cin>>op; while(op--) { stri......
  • CF232D
    my[[discretization]][[SA]][[RMQ]][[BinarySearch]][[SweepLine]][[BIT]][[difference]]linkOHHHHHOHHHHOHHHHHHHHHImadeit!!!!![[Pastedimage202209......
  • 用两个栈实现队列
    请用栈实现一个队列,支持如下四种操作:push(x)–将元素x插到队尾;pop()–将队首的元素弹出,并返回该元素;peek()–返回队首元素;empty()–返回队列是否为空;class......
  • 队列之王: Disruptor 原理、架构、源码 一文穿透
    文章很长,而且持续更新,建议收藏起来,慢慢读!疯狂创客圈总目录博客园版为您奉上珍贵的学习资源:免费赠送:《尼恩Java面试宝典》持续更新+史上最全+面试必备2000页+面......
  • 环形队列、 条带环形队列 Striped-RingBuffer (史上最全)
    文章很长,而且持续更新,建议收藏起来,慢慢读!疯狂创客圈总目录博客园版为您奉上珍贵的学习资源:免费赠送:《尼恩Java面试宝典》持续更新+史上最全+面试必备2000页+面......
  • 构建高性能内存队列:Disruptor 永远滴神~
    Java中有哪些队列​​ArrayBlockingQueue​​使用ReentrantLock​​LinkedBlockingQueue​​使用ReentrantLock​​ConcurrentLinkedQueue​​使用CAS等等我们清楚使用锁......
  • 【工具】简陋的异步转同步队列
    前言最近碰到一个场景,在开发一个需求的过程中将系统的接口封装了一层,但是系统接口全部是以异步的形式回调的,这导致两个问题:外部操作传入封装类的时候,上一次的操作还未完......
  • python初步了解队列
    python初步了解队列队列是一种先入先出的数据结构单纯用列表来实现队列运用pop()函数,进行出队效率很低,因为在列表开头删除元素需要将其他元素往前移动一位.所以一般用......
  • 汉源高科4路RS485双向数据光端机485光纤延长器中继器RS232串口数据光猫
    ......