算法学习----给定入栈的顺序,判断另一个顺序是否为该入栈顺序的一个弹出顺序
来源:互联网 发布:教务办公平台软件 编辑:程序博客网 时间:2024/04/28 05:15
分析:要判断另一个序列是否为当前入栈顺序的一个输出顺序,就必须将输出顺序作为结果,进行比对:思考过程如下:
1.先从popA[0]开始比较,如果popA[0]先弹出,则意味着它之前的元素的没有弹出,那么需要将它之前的元素的压入栈中,压栈的判断条当前的栈顶元素!=popA[0],最后的结果是如果栈顶元素等于当前的popA[0],然后弹出该元素,进入下一个循环popA[1]的比较。
2. 当元素全部入栈(已经弹出的不算),就需要判断栈内元素的弹出顺序是否与后续popA[i]的值相等,是返回true,否则返回false
import java.util.*;public class Solution { public boolean IsPopOrder(int [] pushA,int [] popA) { if(popA.length==0||pushA.length==0)return false; Stack<Integer> stack = new Stack<Integer>();//建立一个临时栈 boolean flag = true; stack.push(pushA[0]);//先入栈pushA中的一个元素 for(int j=1,i=0;i<popA.length;){//循环条件i小于popA[]的长度 if(stack.peek()!=popA[i]){//栈顶元素与popA中的当前元素值不相等 if(j<pushA.length)// 判断pushA下标是否越界,最后的j值会比数组长度大1,之所以这样做,是因为最后只有栈内有未弹出的元素的时,j的下标一定是越界了 stack.push(pushA[j++]); else{//对j值的越界处理 if(!stack.empty()){//如果栈不为空 int t = stack.pop();//从栈中弹出一个值 if(t!=popA[i])return false;//比较这个值与当前popA[i]是否相等,如果不相等,返回false。 } else return true;//如果栈空了,没有和执行上面的return false语句,说明符合要求,返回true } } else{//如果栈顶元素等于当前popA[i]值,将这个值弹出 stack.pop(); i++;//i指向下一个popA[i]的值 } } return flag;//程序执行不到这一步 }}
阅读全文
0 0
- 算法学习----给定入栈的顺序,判断另一个顺序是否为该入栈顺序的一个弹出顺序
- 给定一个入栈顺序和一个出栈顺序,判断出栈顺序是否可能
- 输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否为该栈的弹出顺序
- 输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否为该栈的弹出顺序。
- 算法学习【9】判断是否为栈的弹出顺序
- 已知栈的压入顺序,判断弹出顺序是否正确
- 判断一个序列是否是该栈的弹出顺序
- 输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否为该栈的弹出顺序。假设压入栈的所有数字均不相等。例如序列12345是某栈的压入顺序,序列45321为该压栈序列对应弹出顺序。
- 判断入栈顺序
- 给定入栈顺序,判断出栈顺序是否合法
- 给定入栈顺序,判断出栈顺序是否合法
- 栈的压入、弹出顺序
- 给定一个入栈顺序,输出所有的出栈顺序
- 判断出栈顺序是否满足入栈顺序
- 剑指offer题目描述 输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否为该栈的弹出顺序。
- 给定入栈顺序,输出所有可能的出栈情况,并判断给定的序列是否为正确的输出序列
- 判断是否出栈的顺序满足入栈顺序-Java
- 输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否为该栈的弹出顺序。假设压入栈的所有数字均不相等。例如序列1,2,3,4,5是某栈的压入顺序,序列4,5,3,2,1是该压栈序列对应的一
- TensorFlow-10-基于 LSTM 建立一个语言模型
- 如何用初级的JavaWeb知识写一个较简单的网站(三)
- Codeforces Round #418 (Div. 2) Codeforces 814A-D
- 【动态规划12】codeforces813D Two Melodies(官方题解翻译)
- iscsi
- 算法学习----给定入栈的顺序,判断另一个顺序是否为该入栈顺序的一个弹出顺序
- TensorFlow-11-策略网络
- Android2.3.1系统源码编译
- 第5章 Docker安装wordpress
- 网站静态化处理—前后端分离—中(7)
- 51单片机-C语言之while(!x)的理解
- 编程试题
- BZOJ4592: [Shoi2015]脑洞治疗仪
- 自然连接和等值连接