算法 用两个栈实现队列-(栈+队列)

牛客网: BM42

题目: 用两个栈模拟队列

思路: stack1, stack2两个栈,入队只选择stack1, 出队只选择stack2, 如果stack2为空,将stack1元素全部出栈并入栈stack2。

代码:

// go

package main

var stack1 [] int
var stack2 [] int

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

func Pop() int {
    if len(stack2) == 0 {
        for len(stack1) > 0 {
            node := stack1[len(stack1)-1]
            stack2 = append(stack2, node)
            stack1 = stack1[:len(stack1)-1]
        }
    }
    if len(stack2) > 0 {
        node := stack2[len(stack2)-1]
        stack2 = stack2[:len(stack2)-1]
        return node
    }
    return -1
}

你可能感兴趣的:(牛客网,算法刷题,栈,队列)