牛客网: 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
}