判断以下序列是否为栈的合法输出
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
}