给定入栈顺序,判断出栈顺序是否正确。

 1 var ins = [1, 2, 3, 4, 5];
 2 var outs = [3, 4, 5, 2, 1];
 3 var temp = ins;
 4 var num, i = 0, len;
 5 
 6 /**
 7  * ins 入栈顺序
 8  * outs 出栈顺序
 9  * temp 临时数组,保存入栈顺序
10  * num 是临时数组中 当前出栈节点的下标
11  * len 临时数组的长度-1
12  * 
13  */
14 (function (temp, outs) {
15     if(ins == null || temp == null){
16         console.log("不能为空");
17     }
18     for (i = 0; i < outs.length; i++) {
19         num = temp.indexOf(outs[i]);
20         len = temp.length - 1;
21         if (num > 0 || num < len) {
22             if ((outs[i + 1] == temp[num - 1]) || (outs[i + 1] == temp[num + 1])) {
23                 temp.splice(num, 1);
24                 continue;
25             }
26             console.log('不是正确的出栈顺序');
27             return false;
28         } else if (num == 0) {
29             if (outs[i + 1] == temp[num + 1]) {
30                 temp.splice(num, 1);
31                 continue;
32             }
33             console.log('不是正确的出栈顺序');
34             return false;
35         } else if (num == len) {
36             if (outs[i + 1] == tem[num - 1]) {
37                 temp.splice(num, 1);
38                 continue;
39             }
40             console.log('不是正确的出栈顺序');
41             return false;
42         } else {
43             console.log('不是正确的出栈顺序');
44             return false;
45         }
46     }
47     console.log("正确");
48 })(temp, outs);
原文地址:https://www.cnblogs.com/gemicat/p/4806925.html