lintcode練習 490 棧集

2021-08-21 20:43:06 字數 1105 閱讀 7857

假如你有一堆的盤子。如果你堆得太高的話,就可能會垮掉。所以,在真實的生活中,如果盤子疊到一定高度,你會重新開始堆新的一堆盤子。

實現這樣的乙個資料結構,我們稱之為棧集,來模擬這個過程。這個棧集包含若干個棧(可以理解為若干堆的盤子),如果乙個棧滿了,就需要新建乙個棧來裝新加入的項。你需要實現棧集的兩個方法,push(item)pop(),讓這個棧集對外表現得就像是乙個棧在進行操作一樣。

您在真實的面試中是否遇到過這個題?  是

setofstacks(2);  // 建立乙個單個棧容量為2的棧集

push(1)

push(2)

push(4)

push(8)

push(16)

pop() // return 16

pop() // return 8

pop() // return 4

後續問題: 為棧集實現乙個popat(int index)的方法,讓他可以直接從給定的某個棧上進行pop。

實現**:

push:當setofstack為空或者裡面的最後乙個子棧為滿時,新加乙個子棧

pop:  從最後乙個子棧開始彈出,如果彈出後的子棧為空,則彈出空子棧

class setofstacks:

"""@param: capacity: an inetger, capacity of sub stack

"""def __init__(self, capacity):

# do intialization if necessary

self.setofstack =

self.capacity = capacity

"""@return: an integer

"""def pop(self):

# write your code here

result = self.setofstack[-1].pop()

if len(self.setofstack[-1]) == 0:

self.setofstack.pop()

return result

lintcode練習 494 雙佇列實現棧

利用兩個佇列來實現乙個棧的功能 您在真實的面試中是否遇到過這個題?是 push 1 pop push 2 isempty return false top return 2 pop isempty return true實現 利用list來模擬佇列,在執行pop操作時,將que1裡的值全部存放在qu...

LintCode練習 12 帶最小值操作的棧

題目描述 實現乙個帶有取最小值min方法的棧,min方法將返回當前棧中的最小值。你實現的棧將支援push,pop 和 min 操作,所有操作要求都在o 1 時間內完成。樣例如下操作 push 1 pop push 2 push 3 min push 1 min 返回 2,1 思路 使用兩個列表mda...

Lintcode 用棧實現佇列

正如標題所述,你需要使用兩個棧來實現佇列的一些操作。佇列應支援push element pop 和 top 其中pop是彈出佇列中的第乙個 最前面的 元素。pop和top方法都應該返回第乙個元素的值。樣例 比如push 1 pop push 2 push 3 top pop 你應該返回1,2和2 挑...