1. 程式人生 > 實用技巧 >1441. 用棧操作構建陣列

1441. 用棧操作構建陣列

給你一個目標陣列 target 和一個整數 n。每次迭代,需要從 list = {1,2,3..., n} 中依序讀取一個數字。

請使用下述操作來構建目標陣列 target :

Push:從 list 中讀取一個新元素, 並將其推入陣列中。
Pop:刪除陣列中的最後一個元素。
如果目標陣列構建完成,就停止讀取更多元素。

題目資料保證目標陣列嚴格遞增,並且只包含 1 到 n 之間的數字。

請返回構建目標陣列所用的操作序列。

題目資料保證答案是唯一的。

示例 1:

輸入:target = [1,3], n = 3
輸出:["Push","Push","Pop","Push"]
解釋:

讀取 1 並自動推入陣列 -> [1]
讀取 2 並自動推入陣列,然後刪除它 -> [1]
讀取 3 並自動推入陣列 -> [1,3]

示例 2:

輸入:target = [1,2,3], n = 3
輸出:["Push","Push","Push"]

示例 3:

輸入:target = [1,2], n = 4
輸出:["Push","Push"]
解釋:只需要讀取前 2 個數字就可以停止。

示例 4:

輸入:target = [2,3,4], n = 4
輸出:["Push","Pop","Push","Push","Push"]

class Solution {
    public List<String> buildArray(int[] target, int n) {
        List<String> res = new ArrayList<>();
        int tmp = 1;
        for(int i : target) {
            while(tmp != i) {
                res.add("Push");
                res.add("Pop");
                tmp++;
            }
            res.add("Push");
            tmp++;

        }
        return res;
    }
}

  

提示:

1 <= target.length <= 100
1 <= target[i] <= 100
1 <= n <= 100
target 是嚴格遞增的

來源:力扣(LeetCode)
連結:https://leetcode-cn.com/problems/build-an-array-with-stack-operations
著作權歸領釦網路所有。商業轉載請聯絡官方授權,非商業轉載請註明出處。