zoukankan      html  css  js  c++  java
  • 剑指31 栈的压入 弹出序列

    输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否为该栈的弹出顺序。假设压入栈的所有数字均不相等。例如,序列 {1,2,3,4,5} 是某栈的压栈序列,序列 {4,5,3,2,1} 是该压栈序列对应的一个弹出序列,但 {4,3,5,1,2} 就不可能是该压栈序列的弹出序列。

    示例 1:

    输入:pushed = [1,2,3,4,5], popped = [4,5,3,2,1]
    输出:true
    解释:我们可以按以下顺序执行:
    push(1), push(2), push(3), push(4), pop() -> 4,
    push(5), pop() -> 5, pop() -> 3, pop() -> 2, pop() -> 1
    示例 2:

    输入:pushed = [1,2,3,4,5], popped = [4,3,5,1,2]
    输出:false
    解释:1 不能在 2 之前弹出。
     

    提示:

    0 <= pushed.length == popped.length <= 1000
    0 <= pushed[i], popped[i] < 1000
    pushed 是 popped 的排列。

    这题直接去模拟是否能根据压入序列产生输出序列。

    如果栈当前为空或者顶部元素不等于输出序列的下一个,则一直压入直到栈顶元素等于下一个输出元素。相等就直接弹出,遇到其他情况(一直没有匹配元素,或者结束后栈不为空或压入序列没有结束),就说明不能匹配。

     1 class Solution {
     2 public:
     3     bool validateStackSequences(vector<int>& pushed, vector<int>& popped) {
     4         stack<int> data;
     5         int i=0,j=0;
     6         while(j!=popped.size()){
     7             if(!data.empty() && data.top()==popped.at(j)){
     8                 data.pop();
     9                 j++;
    10             }
    11 
    12             else{
    13                 while(i!=pushed.size()){
    14                     data.push(pushed.at(i));
    15                     i++;
    16                     if(data.top()==popped.at(j))
    17                         break;
    18                 }
    19                 if(data.top()!=popped.at(j))
    20                     return false;
    21             }
    22         }
    23         if(i!=pushed.size() || !data.empty())
    24             return false;
    25         return true;
    26 
    27     }
    28 };
  • 相关阅读:
    js对象与字符串相互转换
    11 ~ express ~ 解决 cookie 中文报错的问题
    10 ~ express ~ 使用 cookie 保存用户 信息
    href="javacript:;" href="javacript:void(0);" href="#"区别。。。
    9 ~ express ~ 用户注册
    8 ~ express ~ 基于数据库的验证
    SpringBoot整合RocketMQ
    RabbitMQ(五)消息发送失败后的处理
    分享一些JVM常见的面试题(转)
    双亲委派模型
  • 原文地址:https://www.cnblogs.com/rookiez/p/13234357.html
Copyright © 2011-2022 走看看