力扣-1441.用栈操作构建数组

本文最后更新于:2022年10月15日 晚上

题目描述

第一张图

思路及实现

我们可以知道,listtarget都是严格递增的,而我们取数也是按顺序:1、2、3…取下去,
所以用for循环遍历一遍target数组,并计算当前数字和前一数字的差,如果当前数字和前一个数字之差大于1,说明前一数字和当前数字之间还隔了几个数,那么我们需要进行数个pushpop操作,来达到list中当前数字的位置,并把它push进去;
如果差刚好为1,说明当前数字就是前一数字的下一位,直接push即可。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
class Solution:
def buildArray(self, target: List[int], n: int) -> List[str]:
push = "Push"
pop = "Pop"
result = []
pre_num = 0
for i, num in enumerate(target):
cnt = num - pre_num
if cnt > 1:
while cnt != 1:
result.append(push)
result.append(pop)
cnt -= 1
result.append(push)
pre_num = num
return result

额,这题难度中等不知道是怎么来的,十分朴素的栈模拟,一分钟就能出答案。


这里有一只爱丽丝

希望本文章能够帮到您~


力扣-1441.用栈操作构建数组
https://map1e-g.github.io/2022/10/15/leetcode-1441/
作者
MaP1e-G
发布于
2022年10月15日
许可协议