21
可堆叠序列
您一次从一副牌中发出标记为0到9的纸牌,形成从0开始并以1递增的堆叠。 分配0时,将其放在桌子上以开始新的堆栈。 当您处理其他任何卡时,您会将其堆叠在一张价值稍低的卡上,并将其覆盖。如果没有这样的卡,则卡座无法堆叠。 给定一个甲板,确定在按给定顺序处理时是否可以堆叠。等效地,给定一个数字列表,决定是否可以将其划分为每种形式的不相交的子序列0,1,..,k 例 走上甲板0012312425。前两张牌是0,因此他们在桌上: Stacks: 00 Deck: 12312425 接下来,我们处理1,继续在上0,无论哪个: 1 Stacks: 00 Deck: 2312425 然后,我们2在刚放置1的3顶部和顶部放置一个。 3 2 1 Stacks: 00 Deck: 12425 接着,对1,2并置于所述第一堆叠的顶上和4顶上的第二个。 4 3 22 11 Stacks: 00 Deck: 25 现在,我们需要放置一个2,但1两个堆栈都没有顶部。因此,此甲板不可堆叠。 输入:一个非空的数字列表0-9,或一个字符串。您不能假设输入中始终为0。 输出:两个不同的一致值之一,一个用于可堆叠序列,一个用于不可堆叠序列 测试用例: 可堆叠: 0 01 01234 00011122234567890 012031 0120304511627328390 不可堆叠: 1 021 0001111 0012312425 012301210 …