leetcode#棧#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:

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

class Solution {
    public List<String> buildArray(int[] target, int n) {
        //target嚴格遞增
        List<String> list = new LinkedList<>();
        int p = 1;
        for(int i:target ) {
            if(i==p) {
                list.add("Push");
                ++p;
            }else{
                while(p<i) {
                    list.add("Push");
                    list.add("Pop");
                    ++p;
                }
                list.add("Push");
                ++p;
            }
        }
        return list;
    }
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章