1
0
mirror of https://gitee.com/coder-xiaomo/leetcode-problemset synced 2025-01-10 18:48:13 +08:00
Code Issues Projects Releases Wiki Activity GitHub Gitee
leetcode-problemset/leetcode-cn/originData/design-circular-queue.json
2023-12-09 19:57:46 +08:00

186 lines
38 KiB
JSON
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

{
"data": {
"question": {
"questionId": "860",
"questionFrontendId": "622",
"categoryTitle": "Algorithms",
"boundTopicId": 1129,
"title": "Design Circular Queue",
"titleSlug": "design-circular-queue",
"content": "<p>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 last position is connected back to the first position to make a circle. It is also called &quot;Ring Buffer&quot;.</p>\n\n<p>One of the benefits of the circular queue is that we can make use of the spaces in front of the queue. In a normal queue, once the queue becomes full, we cannot insert the next element even if there is a space in front of the queue. But using the circular queue, we can use the space to store new values.</p>\n\n<p>Implement the <code>MyCircularQueue</code> class:</p>\n\n<ul>\n\t<li><code>MyCircularQueue(k)</code> Initializes the object with the size of the queue to be <code>k</code>.</li>\n\t<li><code>int Front()</code> Gets the front item from the queue. If the queue is empty, return <code>-1</code>.</li>\n\t<li><code>int Rear()</code> Gets the last item from the queue. If the queue is empty, return <code>-1</code>.</li>\n\t<li><code>boolean enQueue(int value)</code> Inserts an element into the circular queue. Return <code>true</code> if the operation is successful.</li>\n\t<li><code>boolean deQueue()</code> Deletes an element from the circular queue. Return <code>true</code> if the operation is successful.</li>\n\t<li><code>boolean isEmpty()</code> Checks whether the circular queue is empty or not.</li>\n\t<li><code>boolean isFull()</code> Checks whether the circular queue is full or not.</li>\n</ul>\n\n<p>You must solve the problem without using the built-in queue data structure in your programming language.&nbsp;</p>\n\n<p>&nbsp;</p>\n<p><strong class=\"example\">Example 1:</strong></p>\n\n<pre>\n<strong>Input</strong>\n[&quot;MyCircularQueue&quot;, &quot;enQueue&quot;, &quot;enQueue&quot;, &quot;enQueue&quot;, &quot;enQueue&quot;, &quot;Rear&quot;, &quot;isFull&quot;, &quot;deQueue&quot;, &quot;enQueue&quot;, &quot;Rear&quot;]\n[[3], [1], [2], [3], [4], [], [], [], [4], []]\n<strong>Output</strong>\n[null, true, true, true, false, 3, true, true, true, 4]\n\n<strong>Explanation</strong>\nMyCircularQueue myCircularQueue = new MyCircularQueue(3);\nmyCircularQueue.enQueue(1); // return True\nmyCircularQueue.enQueue(2); // return True\nmyCircularQueue.enQueue(3); // return True\nmyCircularQueue.enQueue(4); // return False\nmyCircularQueue.Rear(); // return 3\nmyCircularQueue.isFull(); // return True\nmyCircularQueue.deQueue(); // return True\nmyCircularQueue.enQueue(4); // return True\nmyCircularQueue.Rear(); // return 4\n</pre>\n\n<p>&nbsp;</p>\n<p><strong>Constraints:</strong></p>\n\n<ul>\n\t<li><code>1 &lt;= k &lt;= 1000</code></li>\n\t<li><code>0 &lt;= value &lt;= 1000</code></li>\n\t<li>At most <code>3000</code> calls will be made to&nbsp;<code>enQueue</code>, <code>deQueue</code>,&nbsp;<code>Front</code>,&nbsp;<code>Rear</code>,&nbsp;<code>isEmpty</code>, and&nbsp;<code>isFull</code>.</li>\n</ul>\n",
"translatedTitle": "设计循环队列",
"translatedContent": "<p>设计你的循环队列实现。 循环队列是一种线性数据结构,其操作表现基于 FIFO先进先出原则并且队尾被连接在队首之后以形成一个循环。它也被称为&ldquo;环形缓冲器&rdquo;。</p>\n\n<p>循环队列的一个好处是我们可以利用这个队列之前用过的空间。在一个普通队列里,一旦一个队列满了,我们就不能插入下一个元素,即使在队列前面仍有空间。但是使用循环队列,我们能使用这些空间去存储新的值。</p>\n\n<p>你的实现应该支持如下操作:</p>\n\n<ul>\n\t<li><code>MyCircularQueue(k)</code>: 构造器,设置队列长度为 k 。</li>\n\t<li><code>Front</code>: 从队首获取元素。如果队列为空,返回 -1 。</li>\n\t<li><code>Rear</code>: 获取队尾元素。如果队列为空,返回 -1 。</li>\n\t<li><code>enQueue(value)</code>: 向循环队列插入一个元素。如果成功插入则返回真。</li>\n\t<li><code>deQueue()</code>: 从循环队列中删除一个元素。如果成功删除则返回真。</li>\n\t<li><code>isEmpty()</code>: 检查循环队列是否为空。</li>\n\t<li><code>isFull()</code>: 检查循环队列是否已满。</li>\n</ul>\n\n<p>&nbsp;</p>\n\n<p><strong>示例:</strong></p>\n\n<pre>MyCircularQueue circularQueue = new MyCircularQueue(3); // 设置长度为 3\ncircularQueue.enQueue(1); &nbsp;// 返回 true\ncircularQueue.enQueue(2); &nbsp;// 返回 true\ncircularQueue.enQueue(3); &nbsp;// 返回 true\ncircularQueue.enQueue(4); &nbsp;// 返回 false队列已满\ncircularQueue.Rear(); &nbsp;// 返回 3\ncircularQueue.isFull(); &nbsp;// 返回 true\ncircularQueue.deQueue(); &nbsp;// 返回 true\ncircularQueue.enQueue(4); &nbsp;// 返回 true\ncircularQueue.Rear(); &nbsp;// 返回 4</pre>\n\n<p>&nbsp;</p>\n\n<p><strong>提示:</strong></p>\n\n<ul>\n\t<li>所有的值都在 0&nbsp;至 1000 的范围内;</li>\n\t<li>操作数将在 1 至 1000 的范围内;</li>\n\t<li>请不要使用内置的队列库。</li>\n</ul>\n",
"isPaidOnly": false,
"difficulty": "Medium",
"likes": 495,
"dislikes": 0,
"isLiked": null,
"similarQuestions": "[{\"title\": \"Design Circular Deque\", \"titleSlug\": \"design-circular-deque\", \"difficulty\": \"Medium\", \"translatedTitle\": \"\\u8bbe\\u8ba1\\u5faa\\u73af\\u53cc\\u7aef\\u961f\\u5217\", \"isPaidOnly\": false}]",
"contributors": [],
"langToValidPlayground": "{\"cpp\": false, \"java\": false, \"python\": false, \"python3\": false, \"mysql\": false, \"mssql\": false, \"oraclesql\": false, \"c\": false, \"csharp\": false, \"javascript\": false, \"typescript\": false, \"bash\": false, \"php\": false, \"swift\": false, \"kotlin\": false, \"dart\": false, \"golang\": false, \"ruby\": false, \"scala\": false, \"html\": false, \"pythonml\": false, \"rust\": false, \"racket\": false, \"erlang\": false, \"elixir\": false, \"pythondata\": false, \"react\": false, \"vanillajs\": false, \"postgresql\": false}",
"topicTags": [
{
"name": "Design",
"slug": "design",
"translatedName": "设计",
"__typename": "TopicTagNode"
},
{
"name": "Queue",
"slug": "queue",
"translatedName": "队列",
"__typename": "TopicTagNode"
},
{
"name": "Array",
"slug": "array",
"translatedName": "数组",
"__typename": "TopicTagNode"
},
{
"name": "Linked List",
"slug": "linked-list",
"translatedName": "链表",
"__typename": "TopicTagNode"
}
],
"companyTagStats": null,
"codeSnippets": [
{
"lang": "C++",
"langSlug": "cpp",
"code": "class MyCircularQueue {\npublic:\n MyCircularQueue(int k) {\n\n }\n \n bool enQueue(int value) {\n\n }\n \n bool deQueue() {\n\n }\n \n int Front() {\n\n }\n \n int Rear() {\n\n }\n \n bool isEmpty() {\n\n }\n \n bool isFull() {\n\n }\n};\n\n/**\n * Your MyCircularQueue object will be instantiated and called as such:\n * MyCircularQueue* obj = new MyCircularQueue(k);\n * bool param_1 = obj->enQueue(value);\n * bool param_2 = obj->deQueue();\n * int param_3 = obj->Front();\n * int param_4 = obj->Rear();\n * bool param_5 = obj->isEmpty();\n * bool param_6 = obj->isFull();\n */",
"__typename": "CodeSnippetNode"
},
{
"lang": "Java",
"langSlug": "java",
"code": "class MyCircularQueue {\n\n public MyCircularQueue(int k) {\n\n }\n \n public boolean enQueue(int value) {\n\n }\n \n public boolean deQueue() {\n\n }\n \n public int Front() {\n\n }\n \n public int Rear() {\n\n }\n \n public boolean isEmpty() {\n\n }\n \n public boolean isFull() {\n\n }\n}\n\n/**\n * Your MyCircularQueue object will be instantiated and called as such:\n * MyCircularQueue obj = new MyCircularQueue(k);\n * boolean param_1 = obj.enQueue(value);\n * boolean param_2 = obj.deQueue();\n * int param_3 = obj.Front();\n * int param_4 = obj.Rear();\n * boolean param_5 = obj.isEmpty();\n * boolean param_6 = obj.isFull();\n */",
"__typename": "CodeSnippetNode"
},
{
"lang": "Python",
"langSlug": "python",
"code": "class MyCircularQueue(object):\n\n def __init__(self, k):\n \"\"\"\n :type k: int\n \"\"\"\n\n\n def enQueue(self, value):\n \"\"\"\n :type value: int\n :rtype: bool\n \"\"\"\n\n\n def deQueue(self):\n \"\"\"\n :rtype: bool\n \"\"\"\n\n\n def Front(self):\n \"\"\"\n :rtype: int\n \"\"\"\n\n\n def Rear(self):\n \"\"\"\n :rtype: int\n \"\"\"\n\n\n def isEmpty(self):\n \"\"\"\n :rtype: bool\n \"\"\"\n\n\n def isFull(self):\n \"\"\"\n :rtype: bool\n \"\"\"\n\n\n\n# Your MyCircularQueue object will be instantiated and called as such:\n# obj = MyCircularQueue(k)\n# param_1 = obj.enQueue(value)\n# param_2 = obj.deQueue()\n# param_3 = obj.Front()\n# param_4 = obj.Rear()\n# param_5 = obj.isEmpty()\n# param_6 = obj.isFull()",
"__typename": "CodeSnippetNode"
},
{
"lang": "Python3",
"langSlug": "python3",
"code": "class MyCircularQueue:\n\n def __init__(self, k: int):\n\n\n def enQueue(self, value: int) -> bool:\n\n\n def deQueue(self) -> bool:\n\n\n def Front(self) -> int:\n\n\n def Rear(self) -> int:\n\n\n def isEmpty(self) -> bool:\n\n\n def isFull(self) -> bool:\n\n\n\n# Your MyCircularQueue object will be instantiated and called as such:\n# obj = MyCircularQueue(k)\n# param_1 = obj.enQueue(value)\n# param_2 = obj.deQueue()\n# param_3 = obj.Front()\n# param_4 = obj.Rear()\n# param_5 = obj.isEmpty()\n# param_6 = obj.isFull()",
"__typename": "CodeSnippetNode"
},
{
"lang": "C",
"langSlug": "c",
"code": "\n\n\ntypedef struct {\n \n} MyCircularQueue;\n\n\nMyCircularQueue* myCircularQueueCreate(int k) {\n \n}\n\nbool myCircularQueueEnQueue(MyCircularQueue* obj, int value) {\n \n}\n\nbool myCircularQueueDeQueue(MyCircularQueue* obj) {\n \n}\n\nint myCircularQueueFront(MyCircularQueue* obj) {\n \n}\n\nint myCircularQueueRear(MyCircularQueue* obj) {\n \n}\n\nbool myCircularQueueIsEmpty(MyCircularQueue* obj) {\n \n}\n\nbool myCircularQueueIsFull(MyCircularQueue* obj) {\n \n}\n\nvoid myCircularQueueFree(MyCircularQueue* obj) {\n \n}\n\n/**\n * Your MyCircularQueue struct will be instantiated and called as such:\n * MyCircularQueue* obj = myCircularQueueCreate(k);\n * bool param_1 = myCircularQueueEnQueue(obj, value);\n \n * bool param_2 = myCircularQueueDeQueue(obj);\n \n * int param_3 = myCircularQueueFront(obj);\n \n * int param_4 = myCircularQueueRear(obj);\n \n * bool param_5 = myCircularQueueIsEmpty(obj);\n \n * bool param_6 = myCircularQueueIsFull(obj);\n \n * myCircularQueueFree(obj);\n*/",
"__typename": "CodeSnippetNode"
},
{
"lang": "C#",
"langSlug": "csharp",
"code": "public class MyCircularQueue {\n\n public MyCircularQueue(int k) {\n\n }\n \n public bool EnQueue(int value) {\n\n }\n \n public bool DeQueue() {\n\n }\n \n public int Front() {\n\n }\n \n public int Rear() {\n\n }\n \n public bool IsEmpty() {\n\n }\n \n public bool IsFull() {\n\n }\n}\n\n/**\n * Your MyCircularQueue object will be instantiated and called as such:\n * MyCircularQueue obj = new MyCircularQueue(k);\n * bool param_1 = obj.EnQueue(value);\n * bool param_2 = obj.DeQueue();\n * int param_3 = obj.Front();\n * int param_4 = obj.Rear();\n * bool param_5 = obj.IsEmpty();\n * bool param_6 = obj.IsFull();\n */",
"__typename": "CodeSnippetNode"
},
{
"lang": "JavaScript",
"langSlug": "javascript",
"code": "/**\n * @param {number} k\n */\nvar MyCircularQueue = function(k) {\n\n};\n\n/** \n * @param {number} value\n * @return {boolean}\n */\nMyCircularQueue.prototype.enQueue = function(value) {\n\n};\n\n/**\n * @return {boolean}\n */\nMyCircularQueue.prototype.deQueue = function() {\n\n};\n\n/**\n * @return {number}\n */\nMyCircularQueue.prototype.Front = function() {\n\n};\n\n/**\n * @return {number}\n */\nMyCircularQueue.prototype.Rear = function() {\n\n};\n\n/**\n * @return {boolean}\n */\nMyCircularQueue.prototype.isEmpty = function() {\n\n};\n\n/**\n * @return {boolean}\n */\nMyCircularQueue.prototype.isFull = function() {\n\n};\n\n/**\n * Your MyCircularQueue object will be instantiated and called as such:\n * var obj = new MyCircularQueue(k)\n * var param_1 = obj.enQueue(value)\n * var param_2 = obj.deQueue()\n * var param_3 = obj.Front()\n * var param_4 = obj.Rear()\n * var param_5 = obj.isEmpty()\n * var param_6 = obj.isFull()\n */",
"__typename": "CodeSnippetNode"
},
{
"lang": "TypeScript",
"langSlug": "typescript",
"code": "class MyCircularQueue {\n constructor(k: number) {\n \n }\n\n enQueue(value: number): boolean {\n \n }\n\n deQueue(): boolean {\n \n }\n\n Front(): number {\n \n }\n\n Rear(): number {\n \n }\n\n isEmpty(): boolean {\n \n }\n\n isFull(): boolean {\n \n }\n}\n\n/**\n * Your MyCircularQueue object will be instantiated and called as such:\n * var obj = new MyCircularQueue(k)\n * var param_1 = obj.enQueue(value)\n * var param_2 = obj.deQueue()\n * var param_3 = obj.Front()\n * var param_4 = obj.Rear()\n * var param_5 = obj.isEmpty()\n * var param_6 = obj.isFull()\n */",
"__typename": "CodeSnippetNode"
},
{
"lang": "PHP",
"langSlug": "php",
"code": "class MyCircularQueue {\n /**\n * @param Integer $k\n */\n function __construct($k) {\n\n }\n\n /**\n * @param Integer $value\n * @return Boolean\n */\n function enQueue($value) {\n\n }\n\n /**\n * @return Boolean\n */\n function deQueue() {\n\n }\n\n /**\n * @return Integer\n */\n function Front() {\n\n }\n\n /**\n * @return Integer\n */\n function Rear() {\n\n }\n\n /**\n * @return Boolean\n */\n function isEmpty() {\n\n }\n\n /**\n * @return Boolean\n */\n function isFull() {\n\n }\n}\n\n/**\n * Your MyCircularQueue object will be instantiated and called as such:\n * $obj = MyCircularQueue($k);\n * $ret_1 = $obj->enQueue($value);\n * $ret_2 = $obj->deQueue();\n * $ret_3 = $obj->Front();\n * $ret_4 = $obj->Rear();\n * $ret_5 = $obj->isEmpty();\n * $ret_6 = $obj->isFull();\n */",
"__typename": "CodeSnippetNode"
},
{
"lang": "Swift",
"langSlug": "swift",
"code": "\nclass MyCircularQueue {\n\n init(_ k: Int) {\n\n }\n \n func enQueue(_ value: Int) -> Bool {\n\n }\n \n func deQueue() -> Bool {\n\n }\n \n func Front() -> Int {\n\n }\n \n func Rear() -> Int {\n\n }\n \n func isEmpty() -> Bool {\n\n }\n \n func isFull() -> Bool {\n\n }\n}\n\n/**\n * Your MyCircularQueue object will be instantiated and called as such:\n * let obj = MyCircularQueue(k)\n * let ret_1: Bool = obj.enQueue(value)\n * let ret_2: Bool = obj.deQueue()\n * let ret_3: Int = obj.Front()\n * let ret_4: Int = obj.Rear()\n * let ret_5: Bool = obj.isEmpty()\n * let ret_6: Bool = obj.isFull()\n */",
"__typename": "CodeSnippetNode"
},
{
"lang": "Kotlin",
"langSlug": "kotlin",
"code": "class MyCircularQueue(k: Int) {\n\n fun enQueue(value: Int): Boolean {\n\n }\n\n fun deQueue(): Boolean {\n\n }\n\n fun Front(): Int {\n\n }\n\n fun Rear(): Int {\n\n }\n\n fun isEmpty(): Boolean {\n\n }\n\n fun isFull(): Boolean {\n\n }\n\n}\n\n/**\n * Your MyCircularQueue object will be instantiated and called as such:\n * var obj = MyCircularQueue(k)\n * var param_1 = obj.enQueue(value)\n * var param_2 = obj.deQueue()\n * var param_3 = obj.Front()\n * var param_4 = obj.Rear()\n * var param_5 = obj.isEmpty()\n * var param_6 = obj.isFull()\n */",
"__typename": "CodeSnippetNode"
},
{
"lang": "Dart",
"langSlug": "dart",
"code": "class MyCircularQueue {\n\n MyCircularQueue(int k) {\n \n }\n \n bool enQueue(int value) {\n \n }\n \n bool deQueue() {\n \n }\n \n int Front() {\n \n }\n \n int Rear() {\n \n }\n \n bool isEmpty() {\n \n }\n \n bool isFull() {\n \n }\n}\n\n/**\n * Your MyCircularQueue object will be instantiated and called as such:\n * MyCircularQueue obj = MyCircularQueue(k);\n * bool param1 = obj.enQueue(value);\n * bool param2 = obj.deQueue();\n * int param3 = obj.Front();\n * int param4 = obj.Rear();\n * bool param5 = obj.isEmpty();\n * bool param6 = obj.isFull();\n */",
"__typename": "CodeSnippetNode"
},
{
"lang": "Go",
"langSlug": "golang",
"code": "type MyCircularQueue struct {\n\n}\n\n\nfunc Constructor(k int) MyCircularQueue {\n\n}\n\n\nfunc (this *MyCircularQueue) EnQueue(value int) bool {\n\n}\n\n\nfunc (this *MyCircularQueue) DeQueue() bool {\n\n}\n\n\nfunc (this *MyCircularQueue) Front() int {\n\n}\n\n\nfunc (this *MyCircularQueue) Rear() int {\n\n}\n\n\nfunc (this *MyCircularQueue) IsEmpty() bool {\n\n}\n\n\nfunc (this *MyCircularQueue) IsFull() bool {\n\n}\n\n\n/**\n * Your MyCircularQueue object will be instantiated and called as such:\n * obj := Constructor(k);\n * param_1 := obj.EnQueue(value);\n * param_2 := obj.DeQueue();\n * param_3 := obj.Front();\n * param_4 := obj.Rear();\n * param_5 := obj.IsEmpty();\n * param_6 := obj.IsFull();\n */",
"__typename": "CodeSnippetNode"
},
{
"lang": "Ruby",
"langSlug": "ruby",
"code": "class MyCircularQueue\n\n=begin\n :type k: Integer\n=end\n def initialize(k)\n\n end\n\n\n=begin\n :type value: Integer\n :rtype: Boolean\n=end\n def en_queue(value)\n\n end\n\n\n=begin\n :rtype: Boolean\n=end\n def de_queue()\n\n end\n\n\n=begin\n :rtype: Integer\n=end\n def front()\n\n end\n\n\n=begin\n :rtype: Integer\n=end\n def rear()\n\n end\n\n\n=begin\n :rtype: Boolean\n=end\n def is_empty()\n\n end\n\n\n=begin\n :rtype: Boolean\n=end\n def is_full()\n\n end\n\n\nend\n\n# Your MyCircularQueue object will be instantiated and called as such:\n# obj = MyCircularQueue.new(k)\n# param_1 = obj.en_queue(value)\n# param_2 = obj.de_queue()\n# param_3 = obj.front()\n# param_4 = obj.rear()\n# param_5 = obj.is_empty()\n# param_6 = obj.is_full()",
"__typename": "CodeSnippetNode"
},
{
"lang": "Scala",
"langSlug": "scala",
"code": "class MyCircularQueue(_k: Int) {\n\n def enQueue(value: Int): Boolean = {\n\n }\n\n def deQueue(): Boolean = {\n\n }\n\n def Front(): Int = {\n\n }\n\n def Rear(): Int = {\n\n }\n\n def isEmpty(): Boolean = {\n\n }\n\n def isFull(): Boolean = {\n\n }\n\n}\n\n/**\n * Your MyCircularQueue object will be instantiated and called as such:\n * var obj = new MyCircularQueue(k)\n * var param_1 = obj.enQueue(value)\n * var param_2 = obj.deQueue()\n * var param_3 = obj.Front()\n * var param_4 = obj.Rear()\n * var param_5 = obj.isEmpty()\n * var param_6 = obj.isFull()\n */",
"__typename": "CodeSnippetNode"
},
{
"lang": "Rust",
"langSlug": "rust",
"code": "struct MyCircularQueue {\n\n}\n\n\n/**\n * `&self` means the method takes an immutable reference.\n * If you need a mutable reference, change it to `&mut self` instead.\n */\nimpl MyCircularQueue {\n\n fn new(k: i32) -> Self {\n\n }\n \n fn en_queue(&self, value: i32) -> bool {\n\n }\n \n fn de_queue(&self) -> bool {\n\n }\n \n fn front(&self) -> i32 {\n\n }\n \n fn rear(&self) -> i32 {\n\n }\n \n fn is_empty(&self) -> bool {\n\n }\n \n fn is_full(&self) -> bool {\n\n }\n}\n\n/**\n * Your MyCircularQueue object will be instantiated and called as such:\n * let obj = MyCircularQueue::new(k);\n * let ret_1: bool = obj.en_queue(value);\n * let ret_2: bool = obj.de_queue();\n * let ret_3: i32 = obj.front();\n * let ret_4: i32 = obj.rear();\n * let ret_5: bool = obj.is_empty();\n * let ret_6: bool = obj.is_full();\n */",
"__typename": "CodeSnippetNode"
},
{
"lang": "Racket",
"langSlug": "racket",
"code": "(define my-circular-queue%\n (class object%\n (super-new)\n \n ; k : exact-integer?\n (init-field\n k)\n \n ; en-queue : exact-integer? -> boolean?\n (define/public (en-queue value)\n )\n ; de-queue : -> boolean?\n (define/public (de-queue)\n )\n ; front : -> exact-integer?\n (define/public (front)\n )\n ; rear : -> exact-integer?\n (define/public (rear)\n )\n ; is-empty : -> boolean?\n (define/public (is-empty)\n )\n ; is-full : -> boolean?\n (define/public (is-full)\n )))\n\n;; Your my-circular-queue% object will be instantiated and called as such:\n;; (define obj (new my-circular-queue% [k k]))\n;; (define param_1 (send obj en-queue value))\n;; (define param_2 (send obj de-queue))\n;; (define param_3 (send obj front))\n;; (define param_4 (send obj rear))\n;; (define param_5 (send obj is-empty))\n;; (define param_6 (send obj is-full))",
"__typename": "CodeSnippetNode"
},
{
"lang": "Erlang",
"langSlug": "erlang",
"code": "-spec my_circular_queue_init_(K :: integer()) -> any().\nmy_circular_queue_init_(K) ->\n .\n\n-spec my_circular_queue_en_queue(Value :: integer()) -> boolean().\nmy_circular_queue_en_queue(Value) ->\n .\n\n-spec my_circular_queue_de_queue() -> boolean().\nmy_circular_queue_de_queue() ->\n .\n\n-spec my_circular_queue_front() -> integer().\nmy_circular_queue_front() ->\n .\n\n-spec my_circular_queue_rear() -> integer().\nmy_circular_queue_rear() ->\n .\n\n-spec my_circular_queue_is_empty() -> boolean().\nmy_circular_queue_is_empty() ->\n .\n\n-spec my_circular_queue_is_full() -> boolean().\nmy_circular_queue_is_full() ->\n .\n\n\n%% Your functions will be called as such:\n%% my_circular_queue_init_(K),\n%% Param_1 = my_circular_queue_en_queue(Value),\n%% Param_2 = my_circular_queue_de_queue(),\n%% Param_3 = my_circular_queue_front(),\n%% Param_4 = my_circular_queue_rear(),\n%% Param_5 = my_circular_queue_is_empty(),\n%% Param_6 = my_circular_queue_is_full(),\n\n%% my_circular_queue_init_ will be called before every test case, in which you can do some necessary initializations.",
"__typename": "CodeSnippetNode"
},
{
"lang": "Elixir",
"langSlug": "elixir",
"code": "defmodule MyCircularQueue do\n @spec init_(k :: integer) :: any\n def init_(k) do\n \n end\n\n @spec en_queue(value :: integer) :: boolean\n def en_queue(value) do\n \n end\n\n @spec de_queue() :: boolean\n def de_queue() do\n \n end\n\n @spec front() :: integer\n def front() do\n \n end\n\n @spec rear() :: integer\n def rear() do\n \n end\n\n @spec is_empty() :: boolean\n def is_empty() do\n \n end\n\n @spec is_full() :: boolean\n def is_full() do\n \n end\nend\n\n# Your functions will be called as such:\n# MyCircularQueue.init_(k)\n# param_1 = MyCircularQueue.en_queue(value)\n# param_2 = MyCircularQueue.de_queue()\n# param_3 = MyCircularQueue.front()\n# param_4 = MyCircularQueue.rear()\n# param_5 = MyCircularQueue.is_empty()\n# param_6 = MyCircularQueue.is_full()\n\n# MyCircularQueue.init_ will be called before every test case, in which you can do some necessary initializations.",
"__typename": "CodeSnippetNode"
}
],
"stats": "{\"totalAccepted\": \"138.5K\", \"totalSubmission\": \"296.8K\", \"totalAcceptedRaw\": 138530, \"totalSubmissionRaw\": 296768, \"acRate\": \"46.7%\"}",
"hints": [],
"solution": null,
"status": null,
"sampleTestCase": "[\"MyCircularQueue\",\"enQueue\",\"enQueue\",\"enQueue\",\"enQueue\",\"Rear\",\"isFull\",\"deQueue\",\"enQueue\",\"Rear\"]\n[[3],[1],[2],[3],[4],[],[],[],[4],[]]",
"metaData": "{\n \"classname\": \"MyCircularQueue\",\n \"constructor\": {\n \"params\": [\n {\n \"type\": \"integer\",\n \"name\": \"k\"\n }\n ]\n },\n \"methods\": [\n {\n \"params\": [\n {\n \"type\": \"integer\",\n \"name\": \"value\"\n }\n ],\n \"name\": \"enQueue\",\n \"return\": {\n \"type\": \"boolean\"\n }\n },\n {\n \"params\": [],\n \"name\": \"deQueue\",\n \"return\": {\n \"type\": \"boolean\"\n }\n },\n {\n \"params\": [],\n \"name\": \"Front\",\n \"return\": {\n \"type\": \"integer\"\n }\n },\n {\n \"params\": [],\n \"name\": \"Rear\",\n \"return\": {\n \"type\": \"integer\"\n }\n },\n {\n \"params\": [],\n \"name\": \"isEmpty\",\n \"return\": {\n \"type\": \"boolean\"\n }\n },\n {\n \"params\": [],\n \"name\": \"isFull\",\n \"return\": {\n \"type\": \"boolean\"\n }\n }\n ],\n \"return\": {\n \"type\": \"boolean\"\n },\n \"systemdesign\": true\n}",
"judgerAvailable": true,
"judgeType": "large",
"mysqlSchemas": [],
"enableRunCode": true,
"envInfo": "{\"cpp\":[\"C++\",\"<p>\\u7248\\u672c\\uff1a<code>clang 11<\\/code> \\u91c7\\u7528\\u6700\\u65b0C++ 20\\u6807\\u51c6\\u3002<\\/p>\\r\\n\\r\\n<p>\\u7f16\\u8bd1\\u65f6\\uff0c\\u5c06\\u4f1a\\u91c7\\u7528<code>-O2<\\/code>\\u7ea7\\u4f18\\u5316\\u3002<a href=\\\"https:\\/\\/github.com\\/google\\/sanitizers\\/wiki\\/AddressSanitizer\\\" target=\\\"_blank\\\">AddressSanitizer<\\/a> \\u4e5f\\u88ab\\u5f00\\u542f\\u6765\\u68c0\\u6d4b<code>out-of-bounds<\\/code>\\u548c<code>use-after-free<\\/code>\\u9519\\u8bef\\u3002<\\/p>\\r\\n\\r\\n<p>\\u4e3a\\u4e86\\u4f7f\\u7528\\u65b9\\u4fbf\\uff0c\\u5927\\u90e8\\u5206\\u6807\\u51c6\\u5e93\\u7684\\u5934\\u6587\\u4ef6\\u5df2\\u7ecf\\u88ab\\u81ea\\u52a8\\u5bfc\\u5165\\u3002<\\/p>\"],\"java\":[\"Java\",\"<p>\\u7248\\u672c\\uff1a<code>OpenJDK 17<\\/code>\\u3002\\u53ef\\u4ee5\\u4f7f\\u7528Java 8\\u7684\\u7279\\u6027\\u4f8b\\u5982\\uff0clambda expressions \\u548c stream API\\u3002<\\/p>\\r\\n\\r\\n<p>\\u4e3a\\u4e86\\u65b9\\u4fbf\\u8d77\\u89c1\\uff0c\\u5927\\u90e8\\u5206\\u6807\\u51c6\\u5e93\\u7684\\u5934\\u6587\\u4ef6\\u5df2\\u88ab\\u5bfc\\u5165\\u3002<\\/p>\\r\\n\\r\\n<p>\\u5305\\u542b Pair \\u7c7b: https:\\/\\/docs.oracle.com\\/javase\\/8\\/javafx\\/api\\/javafx\\/util\\/Pair.html <\\/p>\"],\"python\":[\"Python\",\"<p>\\u7248\\u672c\\uff1a <code>Python 2.7.12<\\/code><\\/p>\\r\\n\\r\\n<p>\\u4e3a\\u4e86\\u65b9\\u4fbf\\u8d77\\u89c1\\uff0c\\u5927\\u90e8\\u5206\\u5e38\\u7528\\u5e93\\u5df2\\u7ecf\\u88ab\\u81ea\\u52a8 \\u5bfc\\u5165\\uff0c\\u5982\\uff1a<a href=\\\"https:\\/\\/docs.python.org\\/2\\/library\\/array.html\\\" target=\\\"_blank\\\">array<\\/a>, <a href=\\\"https:\\/\\/docs.python.org\\/2\\/library\\/bisect.html\\\" target=\\\"_blank\\\">bisect<\\/a>, <a href=\\\"https:\\/\\/docs.python.org\\/2\\/library\\/collections.html\\\" target=\\\"_blank\\\">collections<\\/a>\\u3002\\u5982\\u679c\\u60a8\\u9700\\u8981\\u4f7f\\u7528\\u5176\\u4ed6\\u5e93\\u51fd\\u6570\\uff0c\\u8bf7\\u81ea\\u884c\\u5bfc\\u5165\\u3002<\\/p>\\r\\n\\r\\n<p>\\u6ce8\\u610f Python 2.7 <a href=\\\"https:\\/\\/www.python.org\\/dev\\/peps\\/pep-0373\\/\\\" target=\\\"_blank\\\">\\u5c06\\u57282020\\u5e74\\u540e\\u4e0d\\u518d\\u7ef4\\u62a4<\\/a>\\u3002 \\u5982\\u60f3\\u4f7f\\u7528\\u6700\\u65b0\\u7248\\u7684Python\\uff0c\\u8bf7\\u9009\\u62e9Python 3\\u3002<\\/p>\"],\"c\":[\"C\",\"<p>\\u7248\\u672c\\uff1a<code>GCC 8.2<\\/code>\\uff0c\\u91c7\\u7528GNU11\\u6807\\u51c6\\u3002<\\/p>\\r\\n\\r\\n<p>\\u7f16\\u8bd1\\u65f6\\uff0c\\u5c06\\u4f1a\\u91c7\\u7528<code>-O1<\\/code>\\u7ea7\\u4f18\\u5316\\u3002 <a href=\\\"https:\\/\\/github.com\\/google\\/sanitizers\\/wiki\\/AddressSanitizer\\\" target=\\\"_blank\\\">AddressSanitizer<\\/a>\\u4e5f\\u88ab\\u5f00\\u542f\\u6765\\u68c0\\u6d4b<code>out-of-bounds<\\/code>\\u548c<code>use-after-free<\\/code>\\u9519\\u8bef\\u3002<\\/p>\\r\\n\\r\\n<p>\\u4e3a\\u4e86\\u4f7f\\u7528\\u65b9\\u4fbf\\uff0c\\u5927\\u90e8\\u5206\\u6807\\u51c6\\u5e93\\u7684\\u5934\\u6587\\u4ef6\\u5df2\\u7ecf\\u88ab\\u81ea\\u52a8\\u5bfc\\u5165\\u3002<\\/p>\\r\\n\\r\\n<p>\\u5982\\u60f3\\u4f7f\\u7528\\u54c8\\u5e0c\\u8868\\u8fd0\\u7b97, \\u60a8\\u53ef\\u4ee5\\u4f7f\\u7528 <a href=\\\"https:\\/\\/troydhanson.github.io\\/uthash\\/\\\" target=\\\"_blank\\\">uthash<\\/a>\\u3002 \\\"uthash.h\\\"\\u5df2\\u7ecf\\u9ed8\\u8ba4\\u88ab\\u5bfc\\u5165\\u3002\\u8bf7\\u770b\\u5982\\u4e0b\\u793a\\u4f8b:<\\/p>\\r\\n\\r\\n<p><b>1. \\u5f80\\u54c8\\u5e0c\\u8868\\u4e2d\\u6dfb\\u52a0\\u4e00\\u4e2a\\u5bf9\\u8c61\\uff1a<\\/b>\\r\\n<pre>\\r\\nstruct hash_entry {\\r\\n int id; \\/* we'll use this field as the key *\\/\\r\\n char name[10];\\r\\n UT_hash_handle hh; \\/* makes this structure hashable *\\/\\r\\n};\\r\\n\\r\\nstruct hash_entry *users = NULL;\\r\\n\\r\\nvoid add_user(struct hash_entry *s) {\\r\\n HASH_ADD_INT(users, id, s);\\r\\n}\\r\\n<\\/pre>\\r\\n<\\/p>\\r\\n\\r\\n<p><b>2. \\u5728\\u54c8\\u5e0c\\u8868\\u4e2d\\u67e5\\u627e\\u4e00\\u4e2a\\u5bf9\\u8c61\\uff1a<\\/b>\\r\\n<pre>\\r\\nstruct hash_entry *find_user(int user_id) {\\r\\n struct hash_entry *s;\\r\\n HASH_FIND_INT(users, &user_id, s);\\r\\n return s;\\r\\n}\\r\\n<\\/pre>\\r\\n<\\/p>\\r\\n\\r\\n<p><b>3. \\u4ece\\u54c8\\u5e0c\\u8868\\u4e2d\\u5220\\u9664\\u4e00\\u4e2a\\u5bf9\\u8c61\\uff1a<\\/b>\\r\\n<pre>\\r\\nvoid delete_user(struct hash_entry *user) {\\r\\n HASH_DEL(users, user); \\r\\n}\\r\\n<\\/pre>\\r\\n<\\/p>\"],\"csharp\":[\"C#\",\"<p><a href=\\\"https:\\/\\/docs.microsoft.com\\/en-us\\/dotnet\\/csharp\\/whats-new\\/csharp-9\\\" target=\\\"_blank\\\">C# 10<\\/a> \\u8fd0\\u884c\\u5728 .NET 6 \\u4e0a<\\/p>\"],\"javascript\":[\"JavaScript\",\"<p>\\u7248\\u672c\\uff1a<code>Node.js 16.13.2<\\/code><\\/p>\\r\\n\\r\\n<p>\\u60a8\\u7684\\u4ee3\\u7801\\u5728\\u6267\\u884c\\u65f6\\u5c06\\u5e26\\u4e0a <code>--harmony<\\/code> \\u6807\\u8bb0\\u6765\\u5f00\\u542f <a href=\\\"http:\\/\\/node.green\\/\\\" target=\\\"_blank\\\">\\u65b0\\u7248ES6\\u7279\\u6027<\\/a>\\u3002<\\/p>\\r\\n\\r\\n<p><a href=\\\"https:\\/\\/lodash.com\\\" target=\\\"_blank\\\">lodash.js<\\/a> \\u5e93\\u5df2\\u7ecf\\u9ed8\\u8ba4\\u88ab\\u5305\\u542b\\u3002<\\/p>\\r\\n\\r\\n<p> \\u5982\\u9700\\u4f7f\\u7528\\u961f\\u5217\\/\\u4f18\\u5148\\u961f\\u5217\\uff0c\\u60a8\\u53ef\\u4f7f\\u7528 <a href=\\\"https:\\/\\/github.com\\/datastructures-js\\/priority-queue\\/tree\\/fb4fdb984834421279aeb081df7af624d17c2a03\\\" target=\\\"_blank\\\"> datastructures-js\\/priority-queue@5.3.0<\\/a> \\u548c <a href=\\\"https:\\/\\/github.com\\/datastructures-js\\/queue\\/tree\\/e63563025a5a805aa16928cb53bcd517bfea9230\\\" target=\\\"_blank\\\"> datastructures-js\\/queue@4.2.1<\\/a>\\u3002<\\/p>\"],\"ruby\":[\"Ruby\",\"<p>\\u4f7f\\u7528<code>Ruby 3.1<\\/code>\\u6267\\u884c<\\/p>\\r\\n\\r\\n<p>\\u4e00\\u4e9b\\u5e38\\u7528\\u7684\\u6570\\u636e\\u7ed3\\u6784\\u5df2\\u5728 Algorithms \\u6a21\\u5757\\u4e2d\\u63d0\\u4f9b\\uff1ahttps:\\/\\/www.rubydoc.info\\/github\\/kanwei\\/algorithms\\/Algorithms<\\/p>\"],\"swift\":[\"Swift\",\"<p>\\u7248\\u672c\\uff1a<code>Swift 5.5.2<\\/code><\\/p>\\r\\n\\r\\n<p>\\u6211\\u4eec\\u901a\\u5e38\\u4fdd\\u8bc1\\u66f4\\u65b0\\u5230 <a href=\\\"https:\\/\\/swift.org\\/download\\/\\\" target=\\\"_blank\\\">Apple\\u653e\\u51fa\\u7684\\u6700\\u65b0\\u7248Swift<\\/a>\\u3002\\u5982\\u679c\\u60a8\\u53d1\\u73b0Swift\\u4e0d\\u662f\\u6700\\u65b0\\u7248\\u7684\\uff0c\\u8bf7\\u8054\\u7cfb\\u6211\\u4eec\\uff01\\u6211\\u4eec\\u5c06\\u5c3d\\u5feb\\u66f4\\u65b0\\u3002<\\/p>\"],\"golang\":[\"Go\",\"<p>\\u7248\\u672c\\uff1a<code>Go 1.21<\\/code><\\/p>\\r\\n\\r\\n<p>\\u652f\\u6301 <a href=\\\"https:\\/\\/github.com\\/emirpasic\\/gods\\/tree\\/v1.18.1\\\" target=\\\"_blank\\\">https:\\/\\/godoc.org\\/github.com\\/emirpasic\\/gods@v1.18.1<\\/a> \\u7b2c\\u4e09\\u65b9\\u5e93\\u3002<\\/p>\"],\"python3\":[\"Python3\",\"<p>\\u7248\\u672c\\uff1a<code>Python 3.10<\\/code><\\/p>\\r\\n\\r\\n<p>\\u4e3a\\u4e86\\u65b9\\u4fbf\\u8d77\\u89c1\\uff0c\\u5927\\u90e8\\u5206\\u5e38\\u7528\\u5e93\\u5df2\\u7ecf\\u88ab\\u81ea\\u52a8 \\u5bfc\\u5165\\uff0c\\u5982<a href=\\\"https:\\/\\/docs.python.org\\/3\\/library\\/array.html\\\" target=\\\"_blank\\\">array<\\/a>, <a href=\\\"https:\\/\\/docs.python.org\\/3\\/library\\/bisect.html\\\" target=\\\"_blank\\\">bisect<\\/a>, <a href=\\\"https:\\/\\/docs.python.org\\/3\\/library\\/collections.html\\\" target=\\\"_blank\\\">collections<\\/a>\\u3002 \\u5982\\u679c\\u60a8\\u9700\\u8981\\u4f7f\\u7528\\u5176\\u4ed6\\u5e93\\u51fd\\u6570\\uff0c\\u8bf7\\u81ea\\u884c\\u5bfc\\u5165\\u3002<\\/p>\\r\\n\\r\\n<p>\\u5982\\u9700\\u4f7f\\u7528 Map\\/TreeMap \\u6570\\u636e\\u7ed3\\u6784\\uff0c\\u60a8\\u53ef\\u4f7f\\u7528 <a href=\\\"http:\\/\\/www.grantjenks.com\\/docs\\/sortedcontainers\\/\\\" target=\\\"_blank\\\">sortedcontainers<\\/a> \\u5e93\\u3002<\\/p>\"],\"scala\":[\"Scala\",\"<p>\\u7248\\u672c\\uff1a<code>Scala 2.13<\\/code><\\/p>\"],\"kotlin\":[\"Kotlin\",\"<p>\\u7248\\u672c\\uff1a<code>Kotlin 1.9.0<\\/code><\\/p>\\r\\n\\r\\n<p>\\u6211\\u4eec\\u4f7f\\u7528\\u7684\\u662f JetBrains \\u63d0\\u4f9b\\u7684 experimental compiler\\u3002\\u5982\\u679c\\u60a8\\u8ba4\\u4e3a\\u60a8\\u9047\\u5230\\u4e86\\u7f16\\u8bd1\\u5668\\u76f8\\u5173\\u7684\\u95ee\\u9898\\uff0c\\u8bf7\\u5411\\u6211\\u4eec\\u53cd\\u9988<\\/p>\"],\"rust\":[\"Rust\",\"<p>\\u7248\\u672c\\uff1a<code>rust 1.58.1<\\/code><\\/p>\\r\\n\\r\\n<p>\\u652f\\u6301 crates.io \\u7684 <a href=\\\"https:\\/\\/crates.io\\/crates\\/rand\\\" target=\\\"_blank\\\">rand<\\/a><\\/p>\"],\"php\":[\"PHP\",\"<p><code>PHP 8.1<\\/code>.<\\/p>\\r\\n\\r\\n<p>With bcmath module.<\\/p>\"],\"typescript\":[\"TypeScript\",\"<p>TypeScript 5.1.6<\\/p>\\r\\n\\r\\n<p>Compile Options: --alwaysStrict --strictBindCallApply --strictFunctionTypes --target ES2022<\\/p>\\r\\n\\r\\n<p><a href=\\\"https:\\/\\/lodash.com\\\" target=\\\"_blank\\\">lodash.js<\\/a> \\u5e93\\u5df2\\u7ecf\\u9ed8\\u8ba4\\u88ab\\u5305\\u542b\\u3002<\\/p>\\r\\n\\r\\n<p> \\u5982\\u9700\\u4f7f\\u7528\\u961f\\u5217\\/\\u4f18\\u5148\\u961f\\u5217\\uff0c\\u60a8\\u53ef\\u4f7f\\u7528 <a href=\\\"https:\\/\\/github.com\\/datastructures-js\\/priority-queue\\/tree\\/fb4fdb984834421279aeb081df7af624d17c2a03\\\" target=\\\"_blank\\\"> datastructures-js\\/priority-queue@5.3.0<\\/a> \\u548c <a href=\\\"https:\\/\\/github.com\\/datastructures-js\\/queue\\/tree\\/e63563025a5a805aa16928cb53bcd517bfea9230\\\" target=\\\"_blank\\\"> datastructures-js\\/queue@4.2.1<\\/a>\\u3002<\\/p>\"],\"racket\":[\"Racket\",\"<p><a href=\\\"https:\\/\\/docs.racket-lang.org\\/guide\\/performance.html#%28tech._c%29\\\" target=\\\"_blank\\\">Racket CS<\\/a> v8.3<\\/p>\\r\\n\\r\\n<p>\\u4f7f\\u7528 #lang racket<\\/p>\\r\\n\\r\\n<p>\\u5df2\\u9884\\u5148 (require data\\/gvector data\\/queue data\\/order data\\/heap). \\u82e5\\u9700\\u4f7f\\u7528\\u5176\\u5b83\\u6570\\u636e\\u7ed3\\u6784\\uff0c\\u53ef\\u81ea\\u884c require\\u3002<\\/p>\"],\"erlang\":[\"Erlang\",\"Erlang\\/OTP 24.2\"],\"elixir\":[\"Elixir\",\"Elixir 1.13.0 with Erlang\\/OTP 24.2\"],\"dart\":[\"Dart\",\"<p>Dart 2.17.3<\\/p>\\r\\n\\r\\n<p>\\u60a8\\u7684\\u4ee3\\u7801\\u5c06\\u4f1a\\u88ab\\u4e0d\\u7f16\\u8bd1\\u76f4\\u63a5\\u8fd0\\u884c<\\/p>\"]}",
"book": null,
"isSubscribed": false,
"isDailyQuestion": false,
"dailyRecordStatus": null,
"editorType": "CKEDITOR",
"ugcQuestionId": null,
"style": "LEETCODE",
"exampleTestcases": "[\"MyCircularQueue\",\"enQueue\",\"enQueue\",\"enQueue\",\"enQueue\",\"Rear\",\"isFull\",\"deQueue\",\"enQueue\",\"Rear\"]\n[[3],[1],[2],[3],[4],[],[],[],[4],[]]",
"__typename": "QuestionNode"
}
}
}