Сложность: medium
Учитывая, что два целочисленных массива pushed и popped имеют разные значения, верните true, если это могло быть результатом последовательности операций push и pop на изначально пустом стеке, или false в противном случае.
Пример:
Input: pushed = [1,2,3,4,5], popped = [4,5,3,2,1]
Output: true
👨💻 Алгоритм:
1⃣Инициализировать пустой стек.
Использовать указатель j для отслеживания текущей позиции в массиве popped.
2⃣Пройти по каждому элементу в массиве pushed:
Добавить элемент в стек.
Проверить верхний элемент стека:
Если он совпадает с текущим элементом в popped, удалить элемент из стека и увеличить указатель j.
3⃣В конце вернуть true, если указатель j достиг конца массива popped, иначе вернуть false.
😎 Решение:
var validateStackSequences = function(pushed, popped) {
const stack = [];
let j = 0;
for (let x of pushed) {
stack.push(x);
while (stack.length && j < popped.length && stack[stack.length - 1] === popped[j]) {
stack.pop();
j++;
}
}
return j === popped.length;
};Ставь 👍 и забирай 📚 Базу знаний