題目:
實現乙個stack,要求要有min函式實現,該實現複雜度要求o(1)。
要求是要有stack的基本功能,同時加乙個能獲取最小值的函式,實現複雜度度要求o(1)。一開始的想法就是在stack類中維護乙個最小值min,每次插入乙個值就判斷是否比當前最小值還小,是的話就替代最小值,然後再pop棧頂元素時,重新計算最小值(需要遍歷)。這種方法很容易想到,但是明顯效率很低,因為每次pop操作的時候需要o(n)複雜度來求最小值。所以應該找更優化的方法。先看我的實現**:
class stack_z
void push(int value)
s[size++] = value;
} }void pop() }
int _min()
int top()
return s[size - 1];
} int _size()
bool empty()
};
push乙個元素時,如果該元素的值比最小值小,那麼應該由該元素替代最小值,此時用previous_min[index](index為新元素的陣列下標)儲存之前的最小值,這樣當pop元素剛好是最小值的時候就可以用之前的最小值
previous_min[index]替換最小值min。維護和取值複雜度都是o(1)。
百度筆試題
一 選擇題 15分 共10題 1.在排序方法中,關鍵碼比較次數與記錄地初始排列無關的是 a.shell排序 b.歸併排序 c.直接插入排序 d.選擇排序 2.以下多執行緒對int型變數x的操作,哪幾個需要進行同步 a.x y b.x c.x d.x 1 3.void func 中,變數val的記憶體...
百度筆試題
一 選擇題 15分 共10題 1.已知乙個線性表 38,25,74,63,52,48 採用的雜湊函式為hash key key mod 7,將元素雜湊到表長為7的雜湊表中儲存。請選擇後面兩種衝突解決方法分別應用在該雜湊表上進行等概率成功查詢的平均查詢長度,拉鍊法 線性探測法 a.1.0 b.1.5 ...
百度筆試題
1 完成函式 size t foo unsigned int a1,size t al1,unsigned int a2,size t al2 其中a1和a2都為無符號陣列,al1和al2為陣列的長度,陣列的長度為偶數。無符號陣列由一對數字區間組成。如下例 a1 為 0,1,3,6,10,20 a2...