[LeetCode]원형 큐 디자인

Inhwan98·2023년 3월 30일
0

PTU STUDY_leetcode

목록 보기
24/24

문제

원형 큐를 디자인하라.

예제

  • Example 1:
Input
["MyCircularQueue", "enQueue", "enQueue", "enQueue", "enQueue", "Rear", "isFull", "deQueue", "enQueue", "Rear"]
[[3], [1], [2], [3], [4], [], [], [], [4], []]
Output
[null, true, true, true, false, 3, true, true, true, 4]

Explanation
MyCircularQueue myCircularQueue = new MyCircularQueue(3);
myCircularQueue.enQueue(1); // return True
myCircularQueue.enQueue(2); // return True
myCircularQueue.enQueue(3); // return True
myCircularQueue.enQueue(4); // return False
myCircularQueue.Rear();     // return 3
myCircularQueue.isFull();   // return True
myCircularQueue.deQueue();  // return True
myCircularQueue.enQueue(4); // return True
myCircularQueue.Rear();     // return 4

Constraints:

  • 1 <= k <= 1000
  • 0 <= value <= 1000
  • At most 3000 calls will be made to enQueue, deQueue, Front, Rear, isEmpty, and isFull.

코드

class MyCircularQueue {
public:
    int *queue;
    int front;
    int rear;
    int maxQueueSize;

    MyCircularQueue(int k) {

        maxQueueSize = k+1;
        queue = new int[maxQueueSize+1];
        front = 0;
        rear = 0;
    }
    ~MyCircularQueue()
    {
        delete[] queue;
    }

    bool enQueue(int value) {
        if (isFull()) {
            return false;
        }
        else {
            rear = ++rear % maxQueueSize;
            queue[rear] = value;
        }
        return true;
    }

    bool deQueue() {
        if (isEmpty()) {
            return false;
        }
        else {
            
            front = ++front% maxQueueSize;
        }
        return true;
    }

    int Front() {
        if (isEmpty()) return -1;
        else
        {
            return queue[(front+1) % maxQueueSize];
        }
    }

    int Rear() {
        if (isEmpty()) return -1;
        else
        {
            return queue[rear];
        }
    }

    bool isEmpty() {
        return (front == rear);
    }

    bool isFull() {
        return (front == (rear + 1) % maxQueueSize);
    }
};

/**
 * Your MyCircularQueue object will be instantiated and called as such:
 * MyCircularQueue* obj = new MyCircularQueue(k);
 * bool param_1 = obj->enQueue(value);
 * bool param_2 = obj->deQueue();
 * int param_3 = obj->Front();
 * int param_4 = obj->Rear();
 * bool param_5 = obj->isEmpty();
 * bool param_6 = obj->isFull();
 */

결과

Runtime 31 ms / Memory 16.7 MB
https://leetcode.com/problems/design-circular-queue/submissions/925094143/


https://leetcode.com/problems/design-circular-queue/

profile
코딩마스터

0개의 댓글