λ¬Έμ μ λͺ© | μ λ΅λ₯ | λμ΄λ |
622. design_circular_queue | 51.5% | Medium |
Design Circular Queue - LeetCode
Can you solve this real interview question? Design Circular Queue - Design your implementation of the circular queue. The circular queue is a linear data structure in which the operations are performed based on FIFO (First In First Out) principle, and the
leetcode.com
λ¬Έμ μμ½
μν νλ₯Ό λ§λ€μ΄λΌ
μννκ° λ³΄ν΅μ νμ λ€λ₯Έ μ μ μ μΌ λ€μ μ£Όμκ° μ μΌ μμ μ£Όμμ μ°κ²°λμ΄ μλ€λ κ²μ΄λ€(λ³΄ν΅ ν¬κΈ°κ° κ³ μ λμ΄ μλ€)
μΌλ° νμ λ€λ₯΄κ² μμͺ½κ³Ό μ°κ²°λμ΄ μμ΄ μλΆλΆμ μ£Όμλ₯Ό μ¬μ¬μ©ν μ μμ΄ λ©λͺ¨λ¦¬ μ¬μ©λμ μμ΄ μ 리νλ€
- def __init__(self, k: int): k ν¬κΈ°μ μννλ₯Ό μ μΈ
- def enQueue(self, value: int) -> bool: value κ°μ μννμ μ½μ νλ ν¨μ
- def deQueue(self) -> bool: μννμ front μΈλ±μ€μ κ°μ μμ νλ ν¨μ (νμ΄λκΉ FIFO)
- def Front(self) -> int: μννμ front μΈλ±μ€μ κ°μ λ°ννλ ν¨μ
- def Rear(self) -> int: μννμ rear μΈλ±μ€μ κ°μ λ°ννλ ν¨μ
- def isEmpty(self) -> bool: μννκ° λΉμλμ§ νλ¨νλ ν¨μ
- def isFull(self) -> bool: μννμ μλ¦¬κ° μλμ§ νλ¨νλ ν¨μ
νμ΄ 1
μν νλ 리μ€νΈμ, front, rear μΈλ±μ€λ₯Ό μ΄μ©νμ¬ κ΅¬νν μ μλ€.
front μΈλ±μ€λ μν νμμ μ μΌ λ¨Όμ μ½μ λ κ°μ κ°λ¦¬ν€κ³ , rearλ μν νμμ μ μΌ λμ€μ μ½μ λ κ°μ κ°λ¦¬ν¨λ€.
ꡬν μμλ ꡬννκΈ° μ©μ΄νκ²λΆν° νλ€
λͺ¨λ ν¨μλ₯Ό ꡬνν λ,
- μΌλ°μ μΈ κ²½μ°
- rear, frontμ μΈλ±μ€κ° μ μΌ λμ리(len(μνν)-1)μ μλ κ²½μ°λ₯Ό λλμ΄ μκ°νμ(ν΄λΉ μΈλ±μ€μ λ€μ μΈλ±μ€λ 0μ΄κΈ° λλ¬Έμ΄λ€)
__init__
front, rear
isEmpty, isFull
enQueue, deQueue
ꡬν (82ms)
class MyCircularQueue:
def __init__(self, k: int):
self.circularqueue=[None]*k
self.front=0
self.rear=0
def enQueue(self, value: int) -> bool:
if self.isFull():
return False
if self.isEmpty()!=True:
if self.rear!=(len(self.circularqueue)-1):
self.rear+=1
else:
self.rear=0
self.circularqueue[self.rear]=value
return True
def deQueue(self) -> bool:
if self.isEmpty():
return False
self.circularqueue[self.front]=None
if self.front!=self.rear:
if self.front==(len(self.circularqueue)-1):
self.front=0
else:
self.front+=1
return True
def Front(self) -> int:
if self.isEmpty():
return -1
else:
return self.circularqueue[self.front]
def Rear(self) -> int:
if self.isEmpty():
return -1
else:
return self.circularqueue[self.rear]
def isEmpty(self) -> bool:
return (self.circularqueue[self.front]==None)
def isFull(self) -> bool:
if self.rear==(len(self.circularqueue)-1):
return self.front==0 and self.circularqueue[self.front]!=None
else:
return self.rear==(self.front-1)
'μκ³ λ¦¬μ¦π₯ > λ¬Έμ νμ΄ (Python)' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
[Programmers] μλ¬Όμ μ μ΄μ (Lv.3) 2024/3/31 (0) | 2024.03.31 |
---|---|
[LeetCode] 641. design_circular_deque (Medium) 2023/5/11 (0) | 2023.05.11 |
[LeetCode] 232. implement_queue_using_stacks (Easy) 2023/5/10 (0) | 2023.05.10 |
[LeetCode] 739. daily_temperatures (Medium) 2023/5/9 (0) | 2023.05.09 |
[LeetCode] 316. remove_duplicate_letters (Medium) 2023/5/8 (0) | 2023.05.08 |