【LeetCode 简单题】62-用栈实现队列

声明:

今天是第62道题。使用栈实现队列的相关操作。以下所有代码经过楼主验证都能在LeetCode上执行成功,代码也是借鉴别人的,在文末会附上参考的博客链接,如果侵犯了博主的相关权益,请联系我删除

(手动比心ღ( ´・ᴗ・` ))

正文

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

  • 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 toppeek/pop from topsize, 和 is empty 操作是合法的。
  • 你所使用的语言也许不支持栈。你可以使用 list 或者 deque(双端队列)来模拟一个栈,只要是标准的栈操作即可。
  • 假设所有操作都是有效的 (例如,一个空的队列不会调用 pop 或者 peek 操作)。

解法1。push用append实现,pop用pop(0)实现,top用stack[0]实现,通过下标访问,empty通过判断len(stack)==0来实现。

执行用时: 24 ms, 在Implement Queue using Stacks的Python提交中击败了95.24%的用户。

class MyQueue:
    def __init__(self):
        """
        Initialize your data structure here.
        """
        self.stack = []


    def push(self, x):
        """
        Push element x to the back of queue.
        :type x: int
        :rtype: void
        """
        self.stack.append(x)


    def pop(self):
        """
        Removes the element from in front of queue and returns that element.
        :rtype: int
        """
        return self.stack.pop(0)
        # V 2.0:res = self.stack[0]; del self.stack[0]; return res


    def peek(self):
        """
        Get the front element.
        :rtype: int
        """
        return self.stack[0]


    def empty(self):
        """
        Returns whether the queue is empty.
        :rtype: bool
        """
        return len(self.stack) == 0

结尾

解法1:LeetCode

猜你喜欢

转载自blog.csdn.net/weixin_41011942/article/details/83546186
今日推荐