LintCode刷題 40 用棧實現佇列

2021-09-11 13:15:17 字數 1440 閱讀 8171

正如標題所述,你需要使用兩個棧來實現佇列的一些操作。

佇列應支援push(element),pop() 和 top(),其中pop是彈出佇列中的第乙個(最前面的)元素。

pop和top方法都應該返回第乙個元素的值。

樣例

比如push(1), pop(), push(2), push(3), top(), pop(),你應該返回1,2和2

題目主要考察的是佇列和棧兩種資料結構。佇列:先進先出。棧:先進後出。

思路一棧是先進後出,佇列時先進先出的。如果把元素放到stack1中,然後再把這些元素從stack1中彈出,依次放入stack2中,然後取stack2中的元素,就可以實現先進先出了。

當然了,這裡還要注意一些問題。比如在stack2中有元素的時候,不能把stack1的元素壓入到stack2中。

對於python來說,list陣列本身就可以作為乙個棧來使用。

思路一**

class myqueue:

def __init__(self):

# do intialization if necessary

#棧一:push到該棧中

self.stack1 =

#棧二:從該棧中彈出

self.stack2 =

""" @param: element: an integer

@return: nothing

""" def push(self, element):

# write your code here

""" @return: an integer

""" def pop(self):

# write your code here

if self.stack2:

return self.stack2.pop()

if self.stack1:

#將棧一的元素push到棧二中

while (self.stack1):

return self.stack2.pop()

else:

return none

""" @return: an integer

""" def top(self):

# write your code here

if self.stack2:

return self.stack2[len(self.stack2)-1]

if self.stack1:

while (self.stack1):

return self.stack2[len(self.stack2)-1]

else:

return none

複製**

個人目前只懂一丁點python語法,所以不做語法上的優化,而且整體**風格效果會盡量跟c語言趨於一致。

lintcode 用棧實現佇列 40

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

LintCode刷題隨筆

給出乙個陣列nums包含n 1個整數,每個整數是從1到n 包括邊界 保證至少存在乙個重複的整數。假設只有乙個重複的整數,找出這個重複的數。1.不能修改陣列 假設陣列只能讀 2.只能用額外的o 1 的空間 3.時間複雜度小於o n 2 4.陣列中只有乙個重複的數,但可能重複超過一次 您在真實的面試中是...

lintcode刷題 最小差

原題如下 最小差 給定兩個整數陣列 第乙個是陣列a,第二個是陣列b 在陣列 a 中取 a i 陣列 b 中取 b j a i 和 b j 兩者的差越小越好 a i b j 返回最小差。您在真實的面試中是否遇到過這個題?yes 樣例給定陣列 a 3,4,6,7 b 2,3,8,9 返回0。做題思路 1...