题目浅析

  • 想查看原题可以点击题目链接

  • 简单地说,就是给一个 target 数组,现在会让数字从 1 到 n 输入,每次输入都算 Push 操作,而可以选择 Pop 弹出栈顶。求得到 target 数组的操作序列。

思路分享

  • 正如题目所说,每次输入数字就算一次 Push,但是由于输入数字可能会跨越一定数值,因此需要计算中间需要多少次 Push 和对应的 Pop。

  • 对于需要 Pop 的处理有大致两种方法,一种是每 Push 一个就马上 Pop,另一种是 Push 完中间的再一次性 Pop,下面选用第一种方法。

代码解答(强烈建议自行解答后再看)

  • 参考题解
1
2
3
4
5
6
7
8
9
10
11
12
13
14
class Solution:
def buildArray(self, target: List[int], n: int) -> List[str]:
ans = []
index = 1
for x in target:
while index < x:
ans.append("Push")
ans.append("Pop")
index += 1

ans.append("Push")
index += 1

return ans