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;
        }
    }
    
  • 相关阅读:
    TextView走马灯
    Android apk安装时出现“解析软件包错误”
    Android Studio调试手机或者安装APK的时候出现install failed test only
    如何动态改变报表的行高列宽
    如何动态的给报表添加目录
    免费报表工具零代码零基础轻松搞定 web 报表
    脚本中如何做填报数据校验
    脚本填报表的条件查询
    脚本模式下的填报表制作
    交叉填报表的制作
  • 原文地址:https://www.cnblogs.com/mapoos/p/14454269.html
Copyright © 2011-2022 走看看