package main
/**
* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
*
*
* @param pushV int整型一维数组
* @param popV int整型一维数组
* @return bool布尔型
*/
func IsPopOrder( pushV []int , popV []int ) bool {
// write code here
// 用数组模拟栈
s := make([]int, 0, len(pushV))
// 弹出序列的遍历指针
j := 0
// 依次遍压入栈序列
for i := 0; i < len(pushV); i++ {
// 1. 将入栈序列中的一个元素压入到辅助栈中
s = append(s, pushV[i])
// 2. 如果当前辅助栈中不为空,并且要弹出值刚好是辅助栈栈顶元素,那么直接出栈
for len(s) != 0 && s[len(s)-1] == popV[j] {
s = s[:len(s)-1]
j++
}
// 3. 如果需要弹出的值不是辅助栈栈顶元素,那么需要将需要弹出的值及其之前未入栈过的值压入
}
return len(s) == 0
}
