You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
class MyCircularQueue {
private:
int head,tail,size,size_flag;
vector<int>data;
public:
/** Initialize your data structure here. Set the size of the queue to be k. */
MyCircularQueue(int k) {
head = 0;tail = k-1;
size = k;size_flag = 0;
data.resize(k);
}
/** Insert an element into the circular queue. Return true if the operation is successful. */
bool enQueue(int value) {
if(isFull()) return false;
data[head] = value;
head = (head+1)%size;
size_flag++;
return true;
}
/** Delete an element from the circular queue. Return true if the operation is successful. */
bool deQueue() {
if(isEmpty()) return false;
tail = (tail+1)%size;
size_flag--;
return true;
}
/** Get the front item from the queue. */
int Front() {
return isEmpty() ? -1 : data[(tail+1)%size];
}
/** Get the last item from the queue. */
int Rear() {
return isEmpty() ? -1 : data[(head-1+size)%size];
}
/** Checks whether the circular queue is empty or not. */
bool isEmpty() {
return size_flag == 0;
}
/** Checks whether the circular queue is full or not. */
bool isFull() {
return size_flag == size;
}
};
The text was updated successfully, but these errors were encountered:
题目描述:
设计你的循环队列实现。 循环队列是一种线性数据结构,其操作表现基于 FIFO(先进先出)原则并且队尾被连接在队首之后以形成一个循环。它也被称为“环形缓冲器”。
循环队列的一个好处是我们可以利用这个队列之前用过的空间。在一个普通队列里,一旦一个队列满了,我们就不能插入下一个元素,即使在队列前面仍有空间。但是使用循环队列,我们能使用这些空间去存储新的值。
你的实现应该支持如下操作:
示例:
提示:
解题思路:参考了大佬的做法 https://github.com/grandyang/leetcode/issues/622,对于循环的理解还不够透彻,没有想到 (下标+1)%size
C++解法:
The text was updated successfully, but these errors were encountered: