题记:程序猿每天都在教世界上最笨的学生——计算机。
以下面这个数据结构课程经典课后选择题——出栈序列为例,这是高校经典数据结构课本——严蔚敏老师的数据结构第2版第3章栈和队列的第一个选择题,再简单不过了,给定入栈序列,判断下列哪个选项的出栈序列是正确的。要看出这个题的正确选项并不难,可如何让计算机来判断一个序列是不是按照先进后出的原则出栈的呢?从中我们可以窥见一斑,编程是一件非常困难的事,因为你在教世界上最笨的学生——计算机。
这是今天我在刷LeetCode周赛的时候看到的一个题目,题目描述:给定pushed和popped两个序列,只有当它们可能是在最初空栈上进行的推入push 和弹出 pop 操作序列的结果时,返回true;否则,返回false。
例如:若pushed=[1,2,3,4,5],popped=[4,5,3,2,1],则返回true。因为入栈出栈的顺序可以是这样的:1入栈,2入栈,3入栈,4入栈,4出栈,5入栈,5出栈,3出栈,2出栈,1出栈。
又例如:若pushed=[1,2,3,4,5],popped=[4,3