题解 | #栈的压入、弹出序列#
栈的压入、弹出序列
https://www.nowcoder.com/practice/d77d11405cc7470d82554cb392585106
# # 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 # # # @param pushV int整型一维数组 # @param popV int整型一维数组 # @return bool布尔型 # class Solution: def IsPopOrder(self, pushV: List[int], popV: List[int]) -> bool: if pushV == popV == []: return True if len(pushV) != len(popV): return False # 先压栈,到出栈元素时出栈,看看符不符合即可 stack = [] pop_index = 0 for value in pushV: stack.append(value) # 考虑空栈 while stack and popV[pop_index] == stack[-1]: stack.pop() pop_index += 1 if not stack: return True return False
考虑出栈只能是栈顶元素,popV里面的元素和栈顶匹配才出栈,注意for和while的使用