判断序列是否为栈的合法输出

判断以下序列是否为栈的合法输出
a. 4 3 2 1 0 9 8 7 6 5
b. 4 6 8 7 5 3 2 9 0 1
c. 2 5 6 7 4 8 9 3 1 0
d. 4 3 2 1 0 5 6 7 8 9
e. 1 2 3 4 5 6 9 8 7 0
f. 0 4 6 5 3 8 1 7 2 9
g. 1 4 7 9 8 6 5 3 0 2

h. 2 1 4 3 6 5 8 7 9 0

判断是否为合法栈输出的重点在于:在元素i之后的比元素i小的元素是否按降序排列,如果是就合法,否则不合法。

做法就是,按次序取序列的元素作为标准,并将它与后面比它小的元素对比,过滤比它大的元素,并将比它小的元素作为新的标准,再将标准与比它小的每个元素进行比对,验证是否为降序。

public static boolean JudgeStack(int[] num) {
	int low = 0;
	for(int i=0;i<num.length;i++) {
		low = num[i]; 					//先设i为标准
		for(int j=i;j<num.length;j++) {
			if(num[i]>num[j]) {			//只比较比i元素小的元素
				if(num[j]>low) {		//如果后面的元素比标准大,说明不是降序,返回false
					return false;
				}else {
					low=num[j];		//否则,将这个元素设为新的标准
				}
			}
		}
	}
	return true;						//元素遍历完毕,说明合法,返回true
}

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值