zoukankan      html  css  js  c++  java
  • 0946. Validate Stack Sequences (M)

    Validate Stack Sequences (M)

    题目

    Given two sequences pushed and popped with distinct values, return true if and only if this could have been the result of a sequence of push and pop operations on an initially empty stack.

    Example 1:

    Input: pushed = [1,2,3,4,5], popped = [4,5,3,2,1]
    Output: true
    Explanation: We might do the following sequence:
    push(1), push(2), push(3), push(4), pop() -> 4,
    push(5), pop() -> 5, pop() -> 3, pop() -> 2, pop() -> 1
    

    Example 2:

    Input: pushed = [1,2,3,4,5], popped = [4,3,5,1,2]
    Output: false
    Explanation: 1 cannot be popped before 2.
    

    Constraints:

    • 0 <= pushed.length == popped.length <= 1000
    • 0 <= pushed[i], popped[i] < 1000
    • pushed is a permutation of popped.
    • pushed and popped have distinct values.

    题意

    给定一个栈的入栈顺序表和出栈顺序表,判断能否实现对应的出入栈操作(符合先进后出)。

    思路

    贪心+模拟。维护一个栈,当栈顶元素和出栈表的下一个元素相同时,立即出栈;否则压入入栈表的下一个元素。反证法证明正确性:栈中元素都不相同,记当前出栈表的第一个元素为x,如果栈顶元素也为x,且选择不出栈,那么x必然不会成为第一个出栈的元素,矛盾。


    代码实现

    Java

    class Solution {
        public boolean validateStackSequences(int[] pushed, int[] popped) {
            Deque<Integer> stack = new ArrayDeque<>();
            int i = 0, j = 0;
            
            while (j < popped.length) {
                if (i == pushed.length && stack.peek() != popped[j]) return false;
    
                if (stack.isEmpty() || stack.peek() != popped[j]) {
                    stack.push(pushed[i++]);
                } else {
                    stack.pop();
                    j++;
                }
            }
            
            return true;
        }
    }
    
  • 相关阅读:
    PHPCMS 商品浏览记录及其遇到的问题
    9月10日
    phpcms v9 数据库操作函数
    html Meta (整合)
    不同内核浏览器的差异以及浏览器渲染(转)
    position属性absolute与relative(转载)
    html规范,某人总结
    切图神器Assistor PS(PS外挂神器,亲证免费可用,下面是转载的使用方法)
    Android开发学习笔记:圆角的Button
    sublime text 2 技巧
  • 原文地址:https://www.cnblogs.com/mapoos/p/14454269.html
Copyright © 2011-2022 走看看