程式設計師面試金典 面試題 03 01 三合一

2022-08-29 16:36:27 字數 1053 閱讀 4669

三合一。描述如何只用乙個陣列來實現三個棧。

你應該實現push(stacknum, value)、pop(stacknum)、isempty(stacknum)、peek(stacknum)方法。stacknum表示棧下標,value表示壓入的值。

建構函式會傳入乙個stacksize引數,代表每個棧的大小。

示例1:

輸入:

["tripleinone", "push", "push", "pop", "pop", "pop", "isempty"]

[[1], [0, 1], [0, 2], [0], [0], [0], [0]]

輸出:[null, null, null, 1, -1, -1, true]

說明:當棧為空時`pop, peek`返回-1,當棧滿時`push`不壓入元素。

示例2:

輸入:

["tripleinone", "push", "push", "push", "pop", "pop", "pop", "peek"]

[[2], [0, 1], [0, 2], [0, 3], [0], [0], [0], [0]]

輸出:[null, null, null, null, 2, 1, -1, -1]

將乙個陣列分為三段,每段對應乙個棧,每段第乙個位置儲存當前棧中元素個數。分配陣列大小時,每個棧多分配乙個空間用於儲存棧元素個數。

每個棧對應的起始位置start = stacknum * (size + 1)用於儲存棧元素個數。

時間複雜度:o(1)

空間複雜度:o(1)

class tripleinone 

void push(int stacknum, int value)

}int pop(int stacknum)

return -1;

}int peek(int stacknum)

return -1;

}bool isempty(int stacknum)

};

程式設計師面試金典 面試題 08 09 括號

括號。設計一種演算法,列印n對括號的所有合法的 例如,開閉一一對應 組合。說明 解集不能包含重複的子集。例如,給出 n 3,生成結果為 dfs搜尋,如果當前左括號用超了,右括號用超了,或者右括號的數量大於左括號的數量直接返回。而如果左右括號剛好用盡,代表生成乙個結果,記錄下來。然後就是遞迴,新增左括...

程式設計師面試金典 03 01 三合一

三合一。描述如何只用乙個陣列來實現三個棧。你應該實現push stacknum,value pop stacknum isempty stacknum peek stacknum 方法。stacknum表示棧下標,value表示壓入的值。建構函式會傳入乙個stacksize引數,代表每個棧的大小。示...

程式設計師面試金典 面試題 08 13 堆箱子

堆箱子。給你一堆n個箱子,箱子寬 wi 高hi 深di。箱子不能翻轉,將箱子堆起來時,下面箱子的寬度 高度和深度必須大於上面的箱子。實現一種方法,搭出最高的一堆箱子。箱堆的高度為每個箱子高度的總和。輸入使用陣列 wi,di,hi 表示每個箱子。示例1 輸入 box 1,1,1 2,2,2 3,3,3...