Skip to content

Commit

Permalink
leetcode/python/medium/641_design_circular_deque.py
Browse files Browse the repository at this point in the history
  • Loading branch information
bong6981 committed May 27, 2022
1 parent 3493ecb commit b399b12
Showing 1 changed file with 90 additions and 0 deletions.
90 changes: 90 additions & 0 deletions leetcode/python/medium/641_design_circular_deque.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,90 @@
## 81ms, 14.6MB
## https://leetcode.com/problems/design-circular-deque/
class MyCircularDeque:

def __init__(self, k: int):
self.q = [0] * k
self.max_size = k
self.size = 0
self.front = 0
self.rear = 1

def insertFront(self, value: int) -> bool:
if self.size == self.max_size :
return False

self.q[self.front] = value
self.front -= 1
if self.front == -1:
self.front = self.max_size-1
self.size += 1
return True


def insertLast(self, value: int) -> bool:
if self.size == self.max_size :
return False
self.size += 1

self.q[self.rear] = value
self.rear += 1
if self.rear == self.max_size :
self.rear = 0
return True


def deleteFront(self) -> bool:
if not self.size:
return False
self.size -= 1

self.front += 1
if self.front == self.max_size :
self.front = 0
return True


def deleteLast(self) -> bool:
if not self.size:
return False
self.size -= 1

self.rear -= 1
if self.rear == -1:
self.rear = self.max_size - 1
return True


def getFront(self) -> int:
if not self.size:
return -1
if self.front + 1 == self.max_size:
return self.q[0]
return self.q[self.front+1]

def getRear(self) -> int:
if not self.size:
return -1
if self.rear - 1 == -1:
return self.q[self.max_size - 1]
return self.q[self.rear-1]


def isEmpty(self) -> bool:
return self.size == 0


def isFull(self) -> bool:
return self.size == self.max_size


# Your MyCircularDeque object will be instantiated and called as such:
# obj = MyCircularDeque(k)
# param_1 = obj.insertFront(value)
# param_2 = obj.insertLast(value)
# param_3 = obj.deleteFront()
# param_4 = obj.deleteLast()
# param_5 = obj.getFront()
# param_6 = obj.getRear()
# param_7 = obj.isEmpty()
# param_8 = obj.isFull()

0 comments on commit b399b12

Please sign in to comment.