LeetCode-641
Design Circular Deque : Design your implementation of the circular double-ended queue (deque).
note : Returns -1 if the deque is empty.
MyAnswer
:::python
class MyCircularDeque:
def init(self, k: int):
self.maxsize = k
self.deq = collections.deque(maxlen=k)
self.deq_size = 0
def insertFront(self, value: int) -> bool:
if self.deq_size < self.maxsize:
self.deq.insert(0,value)
self.deq_size += 1
return True
else:
return False
def insertLast(self, value: int) -> bool:
if self.deq_size < self.maxsize:
self.deq.append(value)
self.deq_size += 1
return True
else:
return False
def deleteFront(self) -> bool:
if self.deq_size > 0:
self.deq.popleft()
self.deq_size -= 1
return True
else:
return False
def deleteLast(self) -> bool:
if self.deq_size > 0:
self.deq.pop()
self.deq_size -= 1
return True
else:
return False
def getFront(self) -> int:
if self.deq_size > 0:
return self.deq[0]
else:
return -1
def getRear(self) -> int:
if self.deq_size > 0:
return self.deq[-1]
else:
return -1
def isEmpty(self) -> bool:
if self.deq_size==0:
return True
else:
return False
def isFull(self) -> bool:
if self.deq_size==self.maxsize:
return True
else:
return False
# 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()
Result : 61ms Memory: 14.7mb
## Design Circular DequeDesign Circular Deque๋ ์ํ ๋ฑ ์๋ฃ๊ตฌ์กฐ๋ฅผ ๋์์ธํ๋ ๋ฌธ์ ์ ๋๋ค. ์ด๋ฅผ ๊ตฌํํ๊ธฐ ์ํด์๋ ์ํ ํ๋ฅผ ๊ตฌํํ๋ ๋ฐฉ๋ฒ์ด ํ์ํฉ๋๋ค.
CircularDeque
ํด๋์ค๋ ๋ค์๊ณผ ๊ฐ์ ๊ธฐ๋ฅ์ ์ ๊ณตํด์ผ ํฉ๋๋ค.
CircularDeque(k)
: ๊ธธ์ด๊ฐ k์ธ ์ํ ๋ฑ์ ์์ฑํฉ๋๋ค.insertFront()
: ๋ฑ์ ๋งจ ์์ ์์๋ฅผ ์ถ๊ฐํฉ๋๋ค. ์ฑ๊ณตํ๋ฉด True๋ฅผ ๋ฐํํฉ๋๋ค.insertLast()
: ๋ฑ์ ๋งจ ๋ค์ ์์๋ฅผ ์ถ๊ฐํฉ๋๋ค. ์ฑ๊ณตํ๋ฉด True๋ฅผ ๋ฐํํฉ๋๋ค.deleteFront()
: ๋ฑ ๋งจ ์์ ์์๋ฅผ ์ญ์ ํฉ๋๋ค. ์ฑ๊ณตํ๋ฉด True๋ฅผ ๋ฐํํฉ๋๋ค.deleteLast()
: ๋ฑ ๋งจ ๋ค์ ์์๋ฅผ ์ญ์ ํฉ๋๋ค. ์ฑ๊ณตํ๋ฉด True๋ฅผ ๋ฐํํฉ๋๋ค.getFront()
: ๋ฑ ๋งจ ์์ ์์๋ฅผ ๋ฐํํฉ๋๋ค. ๋น์ด์๋ค๋ฉด -1์ ๋ฐํํฉ๋๋ค.getRear()
: ๋ฑ ๋งจ ๋ค์ ์์๋ฅผ ๋ฐํํฉ๋๋ค. ๋น์ด์๋ค๋ฉด -1์ ๋ฐํํฉ๋๋ค.isEmpty()
: ๋ฑ์ด ๋น์ด์๋์ง ํ์ธํฉ๋๋ค. ๋น์ด์๋ค๋ฉด True๋ฅผ ๋ฐํํฉ๋๋ค.isFull()
: ๋ฑ์ด ๊ฐ๋ ์ฐจ ์๋์ง ํ์ธํฉ๋๋ค. ๊ฐ๋ ์ฐจ์๋ค๋ฉด True๋ฅผ ๋ฐํํฉ๋๋ค.
์ด๋ฌํ ๊ธฐ๋ฅ์ ์ํด์๋ CircularDeque
ํด๋์ค ๋ด๋ถ์ ๋ค์๊ณผ ๊ฐ์ ๋ณ์๋ค์ด ํ์ํฉ๋๋ค.
self.queue
: ์ ์ฅ์self.front
: ํ์ฌ ๋งจ ์์ ์ธ๋ฑ์คself.rear
: ํ์ฌ ๋งจ ๋ค์ ์ธ๋ฑ์คself.length
: ์ ์ฅ์์ ๊ธธ์ด
๋ํ insertFront()
์ insertLast()
, deleteFront()
์ deleteLast()
๋ฉ์๋๋ ์๋ก ๋์นญ์ ์ธ ๊ธฐ๋ฅ์ ์ํํฉ๋๋ค. ๋ฐ๋ผ์ insert()
์ delete()
๋ผ๋ ํ๋์ ํจ์๋ก ๋ฌถ์ด์ ๊ตฌํํ ์ ์์ต๋๋ค.
'๐ข One step' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[leetcode-3] Longest Substring Without Repeating Characters (0) | 2023.04.14 |
---|---|
[leetcode-23] Merge k Sorted Lists (0) | 2023.04.09 |
[leetcode-622] Design Circular Queue (0) | 2023.04.07 |
[leetcode-232] Implement Queue using Stacks (0) | 2023.04.06 |
[leetcode-225] Implement Queue using Stacks (0) | 2023.04.05 |