[Leetcode] 622. Design Circular Queue

2021. 1. 18. 14:46Problem Solving/LeetCode

Leetcode 622. Design Circular Queue

(3) Design Circular Queue - LeetCode

 

Design Circular Queue - LeetCode

Level up your coding skills and quickly land a job. This is the best place to expand your knowledge and get prepared for your next interview.

leetcode.com

Solution

class MyCircularQueue:

    def __init__(self, k: int):
        self.q = [None] * (k+1)
        self.max = k + 1
        self.front = 0
        self.rear = 0

    def enQueue(self, value: int) -> bool:
        if self.isFull():
            return False
        else:
            self.rear = (self.rear + 1) % self.max
            self.q[self.rear] = value
            return True

    def deQueue(self) -> bool:
        if self.isEmpty():
            return False
        else:
            self.q[self.front] = None
            self.front = (self.front + 1) % self.max
            return True

    def Front(self) -> int:
        if self.isEmpty():
            return -1
        else:
            return self.q[(self.front + 1) % self.max]

    def Rear(self) -> int:
        if self.isEmpty():
            return -1
        else:
            return self.q[self.rear]

    def isEmpty(self) -> bool:
        return self.front == self.rear

    def isFull(self) -> bool:
        return self.front == (self.rear + 1) % self.max

        # Your MyCircularQueue object will be instantiated and called as such:
        # obj = MyCircularQueue(k)
        # param_1 = obj.enQueue(value)
        # param_2 = obj.deQueue()
        # param_3 = obj.Front()
        # param_4 = obj.Rear()
        # param_5 = obj.isEmpty()
        # param_6 = obj.isFull()

배열을 이용한 풀이다.

Reference

파이썬 알고리즘 인터뷰

파이썬 알고리즘 인터뷰
국내도서
저자 : 박상길
출판 : 책만 2020.07.15
상세보기
반응형