# [LeetCode]#1441. Build an Array With Stack Operations

--

Environment: Python 3.7

Key technique: append

Given an array `target` and an integer `n`. In each iteration, you will read a number from `list = {1,2,3..., n}`.

Build the `target` array using the following operations:

• Push: Read a new element from the beginning `list`, and push it in the array.
• Pop: delete the last element of the array.
• If the target array is already built, stop reading more elements.

You are guaranteed that the target array is strictly increasing, only containing numbers between 1 to `n` inclusive.

Return the operations to build the target array.

You are guaranteed that the answer is unique.

Example 1:

`Input: target = [1,3], n = 3Output: ["Push","Push","Pop","Push"]Explanation: Read number 1 and automatically push in the array -> [1]Read number 2 and automatically push in the array then Pop it -> [1]Read number 3 and automatically push in the array -> [1,3]`

Analysis:

1. Check 1 in target and answer is yes. Add “Push” in list.
2. Check 2 in target and answer is No. Add “Push” and “Pop” in list.
3. Check 3 in target and answer is yes. Add “Push” in list.
4. Return [‘Push’, ‘Push’, ‘Pop’, ‘Push’]

Solution:

`class Solution:    def buildArray(self, target, n):        ans = []        move = 0        for i in range(1, n+1):            ans.append("Push")            move += 1            if i not in target:                ans.append("Pop")                move -= 1            if move == len(target):                break        return ans`

Submission:

Reference:

https://zdyxry.github.io/2020/05/16/2020-%E7%AC%AC20%E5%91%A8-LeetCode-%E8%AE%B0%E5%BD%95/#more