二刷,第一反应就是使用另外的数据结构来模拟。解决方法和我想的是一样的,只不过我想的是LinkedList,其它人用的是Stack。
我的思路就是反方向的pushed,并且正方向的从popped中找。
另外的思路其实更简单,那就是一直pushed,然后碰到和popped中的一样,那么
class Solution {
public boolean validateStackSequences(int[] pushed, int[] popped) {
Stack<Integer> stack = new Stack<Integer>();
int j = 0;
for(int i = 0; i < pushed.length; i++){
stack.push(pushed[i]);
while(!stack.isEmpty() && stack.peek()==popped[j]){
stack.pop();
j++;
}
}
return stack.empty();
}
}