输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否为该栈的弹出顺序。假设压入栈的所有数字均不相等。例如序列1,2,3,4,5是某栈的压入顺序,序列4,5,3,2,1是该压栈序列对应的一
来源:互联网 发布:大数据平台数据传输 编辑:程序博客网 时间:2024/05/21 21:48
分析:我们利用的是栈的性质,后进先出,也就是要保证出栈序列中的每个元素所在入栈序列位置之前的元素都在该元素出栈之后仍在将要出栈的序列中:
import java.util.ArrayList;
public class Solution {
public boolean IsPopOrder(int [] pushA,int [] popA) {
int index_push=pushA.length;
int index_pop=popA.length;
boolean flag=true;
boolean flag_p=false;
if((pushA !=null && popA !=null) && (index_push==index_pop)){
if(index_push==1){
//处理只有一个元素
if(pushA[0]==popA[0]){
return true;
}else{
return false;
}
}
for(int i=0;i<index_pop;i++){
int pop=popA[i];
//找到出栈元素在入栈中的位置
for(int j=0;j<index_push;j++){
if(pushA[j]==pop){
//找到位置j
if(j==0){
//判断压栈第一个元素是否是最后一个出栈元素
if(i !=index_pop-1){
flag=false;
break;
}
}else{
//找到出栈元素在入栈元素的位置j之后判断在j元素前面的入栈元素在出栈元素中是否存在
for(int k=j-1;k>=0;k--){
for(int l=i+1;l<index_pop;l++){
if(pushA[k]==popA[l]){
flag_p=true;
}
}
if(flag_p==true){
flag_p=false;
}else{
break;
}
}
}
}
}
if(!flag){
break;
}
}
if(flag==true){
return true;
}
}
return false;
}
}
- 输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否为该栈的弹出顺序。假设压入栈的所有数字均不相等。例如序列1,2,3,4,5是某栈的压入顺序,序列4,5,3,2,1是该压栈序列对应的一
- 输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否为该栈的弹出顺序。假设压入栈的所有数字均不相等。例如序列1,2,3,4,5是某栈的压入顺序,序列4,5,3,2,1是该压栈序列对应的一
- 输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否为该栈的弹出顺序。假设压入栈的所有数字均不相等。例如序列1,2,3,4,5是某栈的压入顺序,序列4,5,3,2,1是该压栈序列对应的一
- 输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否为该栈的弹出顺序。假设压入栈的所有数字均不相等。例如序列1,2,3,4,5是某栈的压入顺序,序列4,5,3,2,1是该压栈序列对应的一
- 输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否为该栈的弹出顺序。假设压入栈的所有数字均不相等。例如序列1,2,3,4,5是某栈的压入顺序,序列4,5,3,2,1是该压栈序列对应的一
- 输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否为该栈的弹出顺序。假设压入栈的所有数字均不相等。例如序列1,2,3,4,5是某栈的压入顺序,序列4,5,3,2,1是该压栈序列对应的一
- 输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否为该栈的弹出顺序。假设压入栈的所有数字均不相等。例如序列12345是某栈的压入顺序,序列45321为该压栈序列对应弹出顺序。
- 输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否为该栈的弹出顺序
- 输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否为该栈的弹出顺序。
- 剑指offer题目描述 输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否为该栈的弹出顺序。
- 输入两个整数序列。其中一个序列表示栈的push顺序, 判断另一个序列有没有可能是对应的pop顺序。 为了简单起见,我们假设push序列的任意两个整数都是不相等的
- 输入两个整数序列。其中一个序列表示栈的push顺序, 判断另一个序列有没有可能是对应的pop顺序。 为了简单起见,我们假设push序列的任意两个整数都是不相等的
- 判断一个序列是否是该栈的弹出顺序
- 判断第二个序列是否为第一个序列的弹出顺序
- 判断元素出栈、入栈顺序的合法性。如:入栈的序列(1,2,3,4,5),出栈序列为(4,5,3,2,1)是合法序列
- 输入两个整数序列。其中一个序列表示栈的push顺序,判断另一个序列有没有可能是对应的pop顺序
- 题目:输入两个整数序列。其中一个序列表示栈的push顺序,判断另一个序列有没有可能是对应的pop顺序。
- 【算法】输入两个整数序列。其中一个序列表示栈的push顺序,判断另一个序列有没有可能是对应的pop顺序。
- object总结
- 电子线路设计技巧8:UC3843A升压电路中电压反馈环节的设计方法
- 什么是CC攻击?
- python学习之路
- Git&&GitHub【速成】-(5)-Git之branch
- 输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否为该栈的弹出顺序。假设压入栈的所有数字均不相等。例如序列1,2,3,4,5是某栈的压入顺序,序列4,5,3,2,1是该压栈序列对应的一
- spring无法获取上传的文件问题原因及解决方案
- 什么是XSS跨站攻击?
- ubuntu安装sulley
- 每天一个linux命令(24):Linux文件类型与扩展名
- 范德蒙德和Teoplitz方程组的解法
- python- 百度贴吧爬虫
- 裸机实验体验之usb启动配合dnw工具下载
- C++学习笔记