package com.算法专练.力扣.验证栈序列;
import java.util.ArrayDeque;
import java.util.Deque;
/**
* @author xnl
* @Description:
* @date: 2022/8/31 23:45
*/
public class Solution {
public static void main(String[] args) {
Solution solution = new Solution();
int[] pushed = {1,2,3,4,5}, popped = {4,5,3,2,1};
System.out.println(solution.validateStackSequences(pushed, popped));
}
public boolean validateStackSequences(int[] pushed, int[] popped) {
Deque<Integer> deque = new ArrayDeque<>();
int n = pushed.length;
int j = 0;
for (int i = 0; i < n; i++){
if (deque.isEmpty() || deque.peek() != popped[j]){
deque.push(pushed[i]);
}
while (!deque.isEmpty() && deque.peek() == popped[j]){
deque.poll();
j++;
}
}
while (j < n && !deque.isEmpty() && deque.peek() == popped[j]){
j++;
}
return deque.isEmpty();
}
}
模拟即可

这篇文章探讨了如何通过模拟栈操作来验证两个整数数组,一个表示推入操作,另一个表示弹出操作,是否能够保持栈的正确顺序。解决方案利用ArrayDeque实现栈,并通过遍历和比较元素来确保序列的一致性。
150

被折叠的 条评论
为什么被折叠?



