力扣簡單專欄 1441 用棧操作構建陣列

2021-10-22 05:40:12 字數 1213 閱讀 7076

給你乙個目標陣列 target 和乙個整數 n。每次迭代,需要從 list = 中依序讀取乙個數字。

請使用下述操作來構建目標陣列 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」]

1 <= target.length <= 100

1 <= target[i] <= 100

1 <= n <= 100

target 是嚴格遞增的

解題關鍵:

若list資料和target元素相同就繼續掃瞄target,否則加入"pop"。

思路:本題非常簡單,根據題目的特點,計數器掃瞄到每個list資料都要先加入push,如果list資料和target元素不同,說明這個元素需要pop,加入pop即可。值得注意的是,n是沒有用的,因為題目給定了target的長度不超過n,所以你只需在掃瞄target時判定掃瞄指標是否達到target長度即可。

偽**:

class

solution

return stk;

}}

class

solution

return stk;}}

;

力扣 1441 用棧操作構建陣列 C

給你乙個目標陣列 target 和乙個整數 n。每次迭代,需要從 list 中依序讀取乙個數字。請使用下述操作來構建目標陣列 target 題目資料保證目標陣列嚴格遞增,並且只包含 1 到 n 之間的數字。請返回構建目標陣列所用的操作序列。題目資料保證答案是唯一的。示例 1 輸入 target 1 ...

力扣簡單專欄 155 最小棧

設計乙個支援 push pop top 操作,並能在常數時間內檢索到最小元素的棧。push x 將元素 x 推入棧中。pop 刪除棧頂的元素。top 獲取棧頂元素。getmin 檢索棧中的最小元素。示例 輸入 minstack push push push getmin pop top getmin...

力扣簡單專欄 225 用佇列實現棧(雙解法)

請你僅使用兩個佇列實現乙個 先出 lifo 的棧,並支援普通佇列的全部四種操作 push top pop 和 empty 實現 mystack 類 void push int x 將元素 x 壓入棧頂。int pop 移除並返回棧頂元素。int top 返回棧頂元素。boolean empty 如果...