Предположим, что числа от 0 до N последовательно помещаются в стек. В любой момент числа могут быть вытолкнуты из стопки, и каждый раз, когда число выталкивается, оно выводится на экран. Ваша задача - получить последовательность чисел и проверить, может ли эта последовательность быть результатом этой процедуры. Вот несколько примеров:
Пример 1:
Input: 0 1 2 3
Output: True
Explanation:
push 0
pop => print 0
push 1
pop => print 1
push 2
pop => print 2
push 3
pop => print 3
Пример 2:
Input: 0 3 1 2
Output: False
Explanation:
push 0
pop => print 0
push 1
push 2
push 3
pop => print 3
The next number in the sequence is 1, which can't have been popped because
2 is still on the stack, so this sequence is invalid.
Как вы могли бы написать код для решения этой проблемы? У вас нет доступа ни к самому стеку, ни к последовательности pu sh. Вы только знаете, что числа помещаются в стек в порядке возрастания от 0 до N, но их можно вытолкнуть в любое время. Я чувствую, что ответ прямо на кончике моего языка, но я полностью озадачен. Я изо всех сил пытаюсь придумать правило, которому должны следовать входные данные, чтобы считаться действительными.