LeetCode 641 設計迴圈雙端佇列

2021-08-25 17:02:08 字數 2853 閱讀 6396

設計實現雙端佇列。

你的實現需要支援以下操作:

示例:

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 將乙個元素新增到雙端佇列尾部。如果操作成功返回...