前往
大廳
主題

LeetCode - 1441. Build an Array With Stack Operations 解題心得

Not In My Back Yard | 2024-04-02 12:00:08 | 巴幣 0 | 人氣 37

題目連結:


題目意譯:
你被給定一個整數陣列 target 以及一整數 n。

你有著一個空的堆疊(Stack)以及以下兩個操作:
    "Push":將一個整數推入堆疊的頂端。
    "Pop":將一個整數從堆疊的頂端移出。

你同時有一個整數串流,其中依序包含了 [1, n] 中的整數。

使用上列的兩個堆疊操作來使堆疊中的數字(由底端往頂端看)等於 target。同時,你必須遵循以下規則:
    如果串列還非空,從你可從串列中挑出下一個整數並將其推入堆疊中。
    如果堆疊不為空,則你可將堆疊頂端的整數移出。
    如果在某個時刻中,堆疊中的元素(由底端往頂端看)等於 target,則停止從串列中讀取新的整數以及停止執行任何堆疊操作。

回傳根據上述規則,把堆疊的內容變為 target 所需的堆疊操作。如果有多個合法答案,則回傳任一一個。

限制:
1 ≦ target.length ≦ 100
1 ≦ n ≦ 100
1 ≦ target[i] ≦ n
target 嚴格遞增。



範例測資:
範例 1:
輸入: target = [1,3], n = 3
輸出: ["Push","Push","Pop","Push"]
解釋: 一開始堆疊 s 為空。在下面的表示法,最後一個元素位於堆疊頂端。
從串流中讀取數字 1,並將其推入堆疊中。s = [1]。
從串流中讀取數字 2,並將其推入堆疊中。s = [1,2]。
將堆疊頂端的整數移出。s = [1]。
從串流中讀取數字 3,並將其推入堆疊中。s = [1,3]。

範例 2:
輸入: target = [1,2,3], n = 3
輸出: ["Push","Push","Push"]
解釋: 一開始堆疊 s 為空。在下面的表示法,最後一個元素位於堆疊頂端。
從串流中讀取數字 1,並將其推入堆疊中。s = [1]。
從串流中讀取數字 2,並將其推入堆疊中。s = [1,2]。
從串流中讀取數字 3,並將其推入堆疊中。s = [1,2,3]。

範例 3:
輸入: target = [1,2], n = 4
輸出: ["Push","Push"]
解釋: 一開始堆疊 s 為空。在下面的表示法,最後一個元素位於堆疊頂端。
從串流中讀取數字 1,並將其推入堆疊中。s = [1]。
從串流中讀取數字 2,並將其推入堆疊中。s = [1,2]。
由於堆疊(由底端往頂端看)現在等於 target,我們將停止任何堆疊操作。
有從串流中讀取整數 3 的答案將必定不會被接受。


解題思維:
基本上就是這題的超級簡化版。也就是直接模擬即可。




此次分享到此為止,如有任何更加簡潔的想法或是有說明不清楚之地方,也煩請各位大大撥冗討論。

創作回應

相關創作

更多創作