題目:
堆盤子。設想有一堆盤子,堆太高可能會倒下來。因此,在現實生活中,盤子堆到一定高度時,我們就會另外堆一堆盤子。請實現資料結構setofstacks,模擬這種行為。setofstacks應該由多個棧組成,並且在前乙個棧填滿時新建乙個棧。此外,setofstacks.push()和setofstacks.pop()應該與普通棧的操作方法相同(也就是說,pop()返回的值,應該跟只有乙個棧時的情況一樣)。 高階:實現乙個popat(int index)方法,根據指定的子棧,執行pop操作。
當某個棧為空時,應當刪除該棧。當棧中沒有元素或不存在該棧時,pop,popat 應返回 -1.
示例:
輸入:["stackofplates", "push", "push", "popat", "pop", "pop"]
[[1], [1], [2], [1], , ]
輸出:[null, null, null, 2, 1, -1]
個人思路:
用乙個列表儲存棧,這樣當要呼叫某個特定棧返回時,直接從列表中取。push時,獲得列表中最後乙個棧,判斷它是否超過容量,如果沒有就將值壓入,如果超過了,就建立乙個新的棧放值,然後將新棧放入列表。pop是,獲得列表中最後乙個棧,然後彈指,判斷它是否為空,如果空了就將它移除列表(popat同理)。
**:
class stackofplates
public void push(int val)
if(stacklist.size()==0)else}}
public int pop() else
return re;}}
public int popat(int index)
return re;}}
}/**
* your stackofplates object will be instantiated and called as such:
* stackofplates obj = new stackofplates(cap);
* obj.push(val);
* int param_2 = obj.pop();
* int param_3 = obj.popat(index);
*/
演算法 筆試內容 堆與棧
在進行c 程式設計時,需要程式設計師對記憶體的了解比較精準。經常需要操作的記憶體可分為以下幾個類別 棧區 由編譯器自動分配和釋放,存放函式的引數值 區域性變數的值等,其操作的方式類似於資料結構中的棧。堆區 一般有程式設計師分配和釋放,若程式設計師不釋放,程式結束時可能由作業系統收回。主語它與資料結構...
演算法練習 830 單調棧
830.單調棧 給定乙個長度為n的整數數列,輸出每個數左邊第乙個比它小的數,如果不存在則輸出 1。輸入格式 第一行包含整數n,表示數列長度。第二行包含n個整數,表示整數數列。輸出格式 共一行,包含n個整數,其中第i個數表示第i個數的左邊第乙個比它小的數,如果不存在則輸出 1。資料範圍 1 n 105...
內功 基礎演算法 棧,佇列和堆
下面兩個鏈結是我的leetcode棧和佇列的分類。棧 共40題 佇列 共8題 堆 共31題 1 實現乙個特殊的棧,在實現棧的基本功能的基礎上,再實現返回棧中最小元素的操作。2 怎麼用陣列實現棧和佇列。棧用乙個 index,push 就是 index,pop就是 index 佇列用三個變數,start...