題目連結:
題目意譯:
使用堆疊(Stack)實作佇列(Queue)的下列操作。
push(x) —— 將元素 x 推到佇列的尾端。
pop() —— 將佇列前端的元素移除。
peek() —— 取得前端元素之值。
empty() —— 回傳佇列是否為空。
注:
你只能使用堆疊的標準操作——意即放入堆疊頂端、查看/移除頂端的元素、查看大小以及判斷是否為空等操作是唯一允許的。
根據你所使用的程式語言,堆疊可能沒有直接的支援。取而代之的,你可以使用列表(List)或是雙端佇列(Deque 或稱 Double-ended queue)來模擬一個堆疊,但仍只能使用堆疊的標準操作。
你可以假設所有操作是合法的(例如,不會有 pop 或是 peek 操作在佇列為空時呼叫)。
範例測資:
MyQueue queue = new MyQueue();
queue.push(1);
queue.push(2);
queue.peek(); // returns 1
queue.pop(); // returns 1
queue.empty(); // returns false
解題思維:
此次分享到此為止,如有任何更加簡潔的想法或是有說明不清楚之地方,也煩請各位大大撥冗討論。