剑指offer面试题 22 栈的压入、弹出序列的匹配
2016-07-25 15:17
369 查看
不多说,上代码
package sword.to.offer;
import java.util.Stack;
public class IsPopOrder {
static boolean isPopOrder(final int[]pPush,final int[] pPop,int nLegnth){
boolean bImpossible=false;
if(pPush.length!=0&&pPop.length!=0){
java.util.Stack<Integer> stack=new Stack<Integer>();
int i=0;
int j=0;
while(j<nLegnth){
while(stack.isEmpty()||stack.peek()!=pPop[j])
{
if(i==nLegnth){
break;
}
stack.push(pPush[i]);
i++;
}
if(stack.peek()!=pPop[j])
break;
stack.pop();
j++;
}
if(stack.isEmpty()&&j==nLegnth)
bImpossible=true;
}
return bImpossible;
}
public static void main(String[] args) {
//若要验证b是a完整的pop弹出序列,各数组的个数必须
int[] a={1,2,3,4,5};
int[] b= {4,5,3,2,1};
int[]c={4,3,5,1,2};
System.out.println(isPopOrder(a, b,5));
System.out.println(isPopOrder(a, c,5));
}
}
运行结果:
package sword.to.offer;
import java.util.Stack;
public class IsPopOrder {
static boolean isPopOrder(final int[]pPush,final int[] pPop,int nLegnth){
boolean bImpossible=false;
if(pPush.length!=0&&pPop.length!=0){
java.util.Stack<Integer> stack=new Stack<Integer>();
int i=0;
int j=0;
while(j<nLegnth){
while(stack.isEmpty()||stack.peek()!=pPop[j])
{
if(i==nLegnth){
break;
}
stack.push(pPush[i]);
i++;
}
if(stack.peek()!=pPop[j])
break;
stack.pop();
j++;
}
if(stack.isEmpty()&&j==nLegnth)
bImpossible=true;
}
return bImpossible;
}
public static void main(String[] args) {
//若要验证b是a完整的pop弹出序列,各数组的个数必须
int[] a={1,2,3,4,5};
int[] b= {4,5,3,2,1};
int[]c={4,3,5,1,2};
System.out.println(isPopOrder(a, b,5));
System.out.println(isPopOrder(a, c,5));
}
}
运行结果:
相关文章推荐
- 剑指offer中,求输入整数的二进制形式中1的个数(Java代码)
- 剑指offer面试题11 数值的整数次方的Java代码实现
- 剑指offer面试题12 使用BigInteger来实现 打印1到最大的n位数
- 剑指offer第12题 最优解
- 剑指offer第19题 输出二叉树的镜像 java解法
- 剑指offer 面试题21 包含min函数的栈 Java实现
- 剑指offer 面试题23 从上往下打印二叉树 Java实现
- 剑指offer面试题34:丑数
- 想成为嵌入式程序员应知道的0x10个基本问题
- 知乎iOS面试题
- Java常用排序算法/程序员必须掌握的8大排序算法
- Java常用排序算法/程序员必须掌握的8大排序算法
- Java常用排序算法/程序员必须掌握的8大排序算法
- Java常用排序算法/程序员必须掌握的8大排序算法
- Java常用排序算法/程序员必须掌握的8大排序算法
- Java常用排序算法/程序员必须掌握的8大排序算法
- Java常用排序算法/程序员必须掌握的8大排序算法
- 程序员之所以犯错误,不是因为他们不懂,而是因为他们自以为什么都懂——给自己的话
- [置顶] js 面试的坑(2)