zoukankan      html  css  js  c++  java
  • Leetcode 946 验证堆栈序列

    给定 pushed 和 popped 两个序列,每个序列中的 值都不重复,只有当它们可能是在最初空栈上进行的推入 push 和弹出 pop 操作序列的结果时,返回 true;否则,返回 false 。

    链接:https://leetcode-cn.com/problems/validate-stack-sequences

    思路:

    1.整一个堆栈,整一个队列

    2.把出栈顺序压到队伍里面

    3.然后,按元素顺序,一个个push进堆栈里面

    4.每push进去一个,判断是不是和队首元素相同,如果同,出队,出栈 直到两者不相同为止。(注意这边)

    class Solution {
        public boolean validateStackSequences(int[] pushed, int[] popped) {
          Queue<Integer> Queue1 = new LinkedList<>();
            Stack<Integer> Stack1=new Stack<>();
    
    
            for(int i=0;i<popped.length;i++)
            {
                Queue1.offer(popped[i]);
            }
    
            //按元素顺序 push 进堆栈
            for(int i=0;i<pushed.length;i++)
            {
    //            int push_num=pushed[i];
                Stack1.push(pushed[i]);
                //每push进去一个,都判断是不是和队列首部元素相同,
                //如果相同,出队 出栈 直到两者不相同为止
                while ((!Stack1.isEmpty())&&(Stack1.peek().equals(Queue1.peek())))
                {
                    Queue1.poll();
                    Stack1.pop();
                }
            }
            if(!Stack1.isEmpty())
            {
                return false;
            }
           return true;
    
        }
    }
  • 相关阅读:
    Maven进价:Maven构建系列文章
    mybatis.net insert 返回主键
    IIS限制ip访问
    mybatis学习资源
    MVC4发布到IIS,出现HTTP 错误 404.0
    ElasticSearch 7.4.2 Root mapping definition has unsupported parameters
    钉钉网页版全屏
    sudo go 找不到命令
    ubuntu安装navicat
    golang 自动下载所有依赖包
  • 原文地址:https://www.cnblogs.com/William-xh/p/13778654.html
Copyright © 2011-2022 走看看