Description
给你一个正整数 $n$ ,然后给你 $n$ 个正整数 $a_1$ ~ $a_n$ ,问你是否有可能存在入栈顺序为 $1,2,3,…,n$ ,出栈顺序为 $a_1$ ~ $a_n$ 的情况,共有 $T$ 组数据。
$1 \leq n \leq 1000,1 \leq T \leq 10$ 。
Solution
考虑使用 模拟 和 栈 来解题。
直接模拟进栈和出栈,当当前进栈的数的编号为当前要出栈的数的编号时就出栈。这个过程可以用两个指针搞,一个在栈上,一个在指定顺序上,一旦当前两个指针指的位置相同时就要用一个 $\text{while循环}$ 来出 栈 。 注意 ,有可能一次将多个数出栈,如果最后栈上还有数就不行,否则可以。
时间复杂度 $O(n)$ ,具体细节见 代码 部分。
然后这道题目就做完了。
Code
1 |
|
2 |
|
3 |
|
4 |
|
5 |
|
6 |
|
7 |
|
8 |
|
9 |
|
10 |
|
11 |
|
12 |
|
13 |
|
14 |
|
15 |
|
16 |
|
17 |
|
18 |
|
19 |
|
20 |
|
21 |
|
22 |
|
23 |
|
24 |
|
25 |
|
26 |
|
27 |
|
28 |
|
29 |
|
30 |
|
31 |
|
32 |
|
33 |
|
34 |
|
35 |
|
36 |
|
37 |
|
38 |
|
39 |
|
40 |
|
41 |
|
42 |
|
43 |
|
44 |
|
45 |
|
46 |
|
47 |
|
48 |
|
49 |
|
50 |
|
51 |
|
52 |
|
53 |
|
54 |
|