【剑指Offer 5.用两个栈实现队列】|刷题打卡

164 阅读1分钟

目录

  • 题目描述
  • 思路分析
  • AC 代码
  • 总结

掘金团队号上线,助你 Offer 临门! 点击 查看详情

一、题目描述

用两个栈来实现一个队列,完成队列的Push和Pop操作。 队列中的元素为int类型。

示例

由于本题太简单,示例就省了

二、思路分析

难度:简单

本题考察的是队列和栈,不管我们是用栈实现队列,还是用队列实现栈,都要求我们对二者的特性非常了解,不然只知道队列的特性,不知道栈的特性,也无法完成编码。

熟悉的小伙伴都知道,队列是先进先出结构,栈是先进后出结构。如果想用两个栈实现一个队列,那么其中一个栈肯定是用来做转换存储的。

三、AC 代码

语言:Go

代码:

package main

var stack1 [] int
var stack2 [] int

func Push(node int) {
    stack1 = append(stack1, node)
}

func Pop() int{
    if len(stack2) == 0 {
        stack2 = append(stack2, stack1...)
        stack1 = []int{}
    }
    res := stack2[0]
    stack2 = stack2[1:]
    return res
}

通过截图:

image.png

四、总结

用栈实现队列,用队列实现栈是面试时,面试官比较喜欢考的,因为栈和队列是实际开发过程中经常遇到的数据结构,不像树和图,所以非常能够考察候选者的实际动手能力和理论能力。所以,我们一定要重视。