正如標題所述,你需要使用兩個棧來實現佇列的一些操作。
佇列應支援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...