設計實現雙端佇列。
你的實現需要支援以下操作:
示例:
mycirculardeque circulardeque = new mycirculardeque(3); // 設定容量大小為3
circulardeque.insertlast(1); // 返回 true
circulardeque.insertlast(2); // 返回 true
circulardeque.insertfront(3); // 返回 true
circulardeque.insertfront(4); // 已經滿了,返回 false
circulardeque.getrear(); // 返回 3
circulardeque.isfull(); // 返回 true
circulardeque.deletelast(); // 返回 true
circulardeque.insertfront(4); // 返回 true
circulardeque.getfront(); // 返回 4
思路:用順序表實現雙端佇列,由於限定了佇列的長度,所以在增加和刪除的時候需要判斷一下
class mycirculardeque:
def __init__(self, k):
"""initialize your data structure here. set the size of the deque to be k.
:type k: int
"""self.item =
self.k = k
def insertfront(self, value):
"""adds an item at the front of deque. return true if the operation is successful.
:type value: int
:rtype: bool
"""if len(self.item) >= self.k:
return false
self.item.insert(0, value)
return true
def insertlast(self, value):
"""adds an item at the rear of deque. return true if the operation is successful.
:type value: int
:rtype: bool
"""if len(self.item) >= self.k:
return false
return true
def deletefront(self):
"""deletes an item from the front of deque. return true if the operation is successful.
:rtype: bool
"""if len(self.item) == 0:
return false
self.item.pop(0)
return true
def deletelast(self):
"""deletes an item from the rear of deque. return true if the operation is successful.
:rtype: bool
"""if len(self.item) == 0:
return false
self.item.pop()
return true
def getfront(self):
"""get the front item from the deque.
:rtype: int
"""if len(self.item) == 0:
return -1
return self.item[0]
def getrear(self):
"""get the last item from the deque.
:rtype: int
"""if len(self.item) == 0:
return -1
return self.item[-1]
def isempty(self):
"""checks whether the circular deque is empty or not.
:rtype: bool
"""return self.item ==
def isfull(self):
"""checks whether the circular deque is full or not.
:rtype: bool
"""if len(self.item) == self.k:
return true
m = mycirculardeque(3)
print(m.insertlast(1)) # 1
print(m.insertlast(2)) # 1 2
print(m.insertlast(3)) # 1 2 3
print(m.insertlast(4)) # 1 2 3
print(m.getrear())
print(m.isfull())
print(m.deletelast()) # 1 2
print(m.insertfront(4)) # 4 1 2
print(m.getfront())
LeetCode 641 設計迴圈雙端佇列
設計實現雙端佇列。你的實現需要支援以下操作 mycirculardeque k 建構函式,雙端佇列的大小為k。insertfront 將乙個元素新增到雙端佇列頭部。如果操作成功返回 true。insertlast 將乙個元素新增到雙端佇列尾部。如果操作成功返回 true。deletefront 從雙...
641 設計迴圈雙端佇列
設計實現雙端佇列。你的實現需要支援以下操作 mycirculardeque k 建構函式,雙端佇列的大小為k。insertfront 將乙個元素新增到雙端佇列頭部。如果操作成功返回 true。insertlast 將乙個元素新增到雙端佇列尾部。如果操作成功返回 true。deletefront 從雙...
641 設計迴圈雙端佇列
2020 04 10 設計迴圈雙端佇列 設計實現雙端佇列。你的實現需要支援以下操作 mycirculardeque k 建構函式,雙端佇列的大小為k。insertfront 將乙個元素新增到雙端佇列頭部。如果操作成功返回 true。insertlast 將乙個元素新增到雙端佇列尾部。如果操作成功返回...