Javascript 如何在没有推送序列的情况下验证pop序列?

Javascript 如何在没有推送序列的情况下验证pop序列?,javascript,stack,logic,Javascript,Stack,Logic,假设从0到N的数字按顺序推送到堆栈上。在任何时候,数字都可以从堆栈中弹出,任何时候弹出一个数字都会打印到屏幕上。您的任务是接收数字序列,并验证该序列是否是此过程的结果。以下是一些例子: 例1: 输入:0 1 2 3 输出:真 说明: 推0 pop=>打印0 推1 pop=>打印1 推2 pop=>打印2 推3 pop=>打印3 例2: 输入:0 3 1 2 输出:False 说明: 推0 pop=>打印0 推1 推2 推3 pop=>打印3 序列中的下一个数字是1,它不可能被弹出,因为 2仍在

假设从0到N的数字按顺序推送到堆栈上。在任何时候,数字都可以从堆栈中弹出,任何时候弹出一个数字都会打印到屏幕上。您的任务是接收数字序列,并验证该序列是否是此过程的结果。以下是一些例子:

例1:

输入:0 1 2 3
输出:真
说明:
推0
pop=>打印0
推1
pop=>打印1
推2
pop=>打印2
推3
pop=>打印3
例2:

输入:0 3 1 2
输出:False
说明:
推0
pop=>打印0
推1
推2
推3
pop=>打印3
序列中的下一个数字是1,它不可能被弹出,因为
2仍在堆栈上,因此此序列无效。

如何编写代码来解决这个问题?您无法访问堆栈本身或推送序列。您只知道数字是按从0到N的升序推送到堆栈上的,但它们可以随时弹出。我觉得答案就在嘴边,但我完全被难住了。我正在努力想出一个规则,一个输入需要遵循才能被认为是有效的。

我投票将这个问题作为离题题结束,因为它不是我的家庭作业。我不确定这是怎么离题的,因为这是一个编程问题。这也不是一个家庭作业问题,只是我需要帮助。我们是否在讨论
push
pop
的典型实现?如果是这样的话,打印到屏幕与什么有关系?在您的第二个示例中,如何在推送它之前
pop
1。第一个
pop
应已删除0。如果这些数字是按顺序输入的,而现在它们是非顺序的,那么它们不是通过这种方法生成的,或者我遗漏了什么?对不起,我打错了第二个示例。我只是编辑了一下,这样现在就准确了。你说得对,第一次爆炸会消除零。在屏幕上打印与问题没有任何关系,它只是一种证明我们如何获得此序列的方法。每次弹出时,它要么高于上次弹出的数字,要么最高的数字小于所有弹出的数字。因此,在03之后,下一个数字必须是>3或2。在0 3 4 2之后,下一个数字必须是>4或1。