mirror of
https://gitee.com/coder-xiaomo/leetcode-problemset
synced 2025-01-10 18:48:13 +08:00
189 lines
33 KiB
JSON
189 lines
33 KiB
JSON
{
|
||
"data": {
|
||
"question": {
|
||
"questionId": "100228",
|
||
"questionFrontendId": "面试题 03.06",
|
||
"categoryTitle": "LCCI",
|
||
"boundTopicId": 58152,
|
||
"title": "Animal Shelter LCCI",
|
||
"titleSlug": "animal-shelter-lcci",
|
||
"content": "<p>An animal shelter, which holds only dogs and cats, operates on a strictly"first in, first out" basis. People must adopt either the"oldest" (based on arrival time) of all animals at the shelter, or they can select whether they would prefer a dog or a cat (and will receive the oldest animal of that type). They cannot select which specific animal they would like. Create the data structures to maintain this system and implement operations such as <code>enqueue</code>, <code>dequeueAny</code>, <code>dequeueDog</code>, and <code>dequeueCat</code>. You may use the built-in Linked list data structure.</p>\r\n\r\n<p><code>enqueue</code> method has a <code>animal</code> parameter, <code>animal[0]</code> represents the number of the animal, <code>animal[1]</code> represents the type of the animal, 0 for cat and 1 for dog.</p>\r\n\r\n<p><code>dequeue*</code> method returns <code>[animal number, animal type]</code>, if there's no animal that can be adopted, return <code>[-1, -1]</code>.</p>\r\n\r\n<p><strong>Example1:</strong></p>\r\n\r\n<pre>\r\n<strong> Input</strong>: \r\n["AnimalShelf", "enqueue", "enqueue", "dequeueCat", "dequeueDog", "dequeueAny"]\r\n[[], [[0, 0]], [[1, 0]], [], [], []]\r\n<strong> Output</strong>: \r\n[null,null,null,[0,0],[-1,-1],[1,0]]\r\n</pre>\r\n\r\n<p><strong>Example2:</strong></p>\r\n\r\n<pre>\r\n<strong> Input</strong>: \r\n["AnimalShelf", "enqueue", "enqueue", "enqueue", "dequeueDog", "dequeueCat", "dequeueAny"]\r\n[[], [[0, 0]], [[1, 0]], [[2, 1]], [], [], []]\r\n<strong> Output</strong>: \r\n[null,null,null,null,[2,1],[0,0],[1,0]]\r\n</pre>\r\n\r\n<p><strong>Note:</strong></p>\r\n\r\n<ol>\r\n\t<li>The number of animals in the shelter will not exceed 20000.</li>\r\n</ol>\r\n",
|
||
"translatedTitle": "动物收容所",
|
||
"translatedContent": "<p>动物收容所。有家动物收容所只收容狗与猫,且严格遵守“先进先出”的原则。在收养该收容所的动物时,收养人只能收养所有动物中“最老”(由其进入收容所的时间长短而定)的动物,或者可以挑选猫或狗(同时必须收养此类动物中“最老”的)。换言之,收养人不能自由挑选想收养的对象。请创建适用于这个系统的数据结构,实现各种操作方法,比如<code>enqueue</code>、<code>dequeueAny</code>、<code>dequeueDog</code>和<code>dequeueCat</code>。允许使用Java内置的LinkedList数据结构。</p>\n\n<p><code>enqueue</code>方法有一个<code>animal</code>参数,<code>animal[0]</code>代表动物编号,<code>animal[1]</code>代表动物种类,其中 0 代表猫,1 代表狗。</p>\n\n<p><code>dequeue*</code>方法返回一个列表<code>[动物编号, 动物种类]</code>,若没有可以收养的动物,则返回<code>[-1,-1]</code>。</p>\n\n<p><strong>示例1:</strong></p>\n\n<pre><strong> 输入</strong>:\n["AnimalShelf", "enqueue", "enqueue", "dequeueCat", "dequeueDog", "dequeueAny"]\n[[], [[0, 0]], [[1, 0]], [], [], []]\n<strong> 输出</strong>:\n[null,null,null,[0,0],[-1,-1],[1,0]]\n</pre>\n\n<p><strong>示例2:</strong></p>\n\n<pre><strong> 输入</strong>:\n["AnimalShelf", "enqueue", "enqueue", "enqueue", "dequeueDog", "dequeueCat", "dequeueAny"]\n[[], [[0, 0]], [[1, 0]], [[2, 1]], [], [], []]\n<strong> 输出</strong>:\n[null,null,null,null,[2,1],[0,0],[1,0]]\n</pre>\n\n<p><strong>说明:</strong></p>\n\n<ol>\n\t<li>收纳所的最大容量为20000</li>\n</ol>\n",
|
||
"isPaidOnly": false,
|
||
"difficulty": "Easy",
|
||
"likes": 54,
|
||
"dislikes": 0,
|
||
"isLiked": null,
|
||
"similarQuestions": "[]",
|
||
"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"
|
||
}
|
||
],
|
||
"companyTagStats": null,
|
||
"codeSnippets": [
|
||
{
|
||
"lang": "C++",
|
||
"langSlug": "cpp",
|
||
"code": "class AnimalShelf {\npublic:\n AnimalShelf() {\n\n }\n \n void enqueue(vector<int> animal) {\n\n }\n \n vector<int> dequeueAny() {\n\n }\n \n vector<int> dequeueDog() {\n\n }\n \n vector<int> dequeueCat() {\n\n }\n};\n\n/**\n * Your AnimalShelf object will be instantiated and called as such:\n * AnimalShelf* obj = new AnimalShelf();\n * obj->enqueue(animal);\n * vector<int> param_2 = obj->dequeueAny();\n * vector<int> param_3 = obj->dequeueDog();\n * vector<int> param_4 = obj->dequeueCat();\n */",
|
||
"__typename": "CodeSnippetNode"
|
||
},
|
||
{
|
||
"lang": "Java",
|
||
"langSlug": "java",
|
||
"code": "class AnimalShelf {\n\n public AnimalShelf() {\n\n }\n \n public void enqueue(int[] animal) {\n\n }\n \n public int[] dequeueAny() {\n\n }\n \n public int[] dequeueDog() {\n\n }\n \n public int[] dequeueCat() {\n\n }\n}\n\n/**\n * Your AnimalShelf object will be instantiated and called as such:\n * AnimalShelf obj = new AnimalShelf();\n * obj.enqueue(animal);\n * int[] param_2 = obj.dequeueAny();\n * int[] param_3 = obj.dequeueDog();\n * int[] param_4 = obj.dequeueCat();\n */",
|
||
"__typename": "CodeSnippetNode"
|
||
},
|
||
{
|
||
"lang": "Python",
|
||
"langSlug": "python",
|
||
"code": "class AnimalShelf(object):\n\n def __init__(self):\n\n\n def enqueue(self, animal):\n \"\"\"\n :type animal: List[int]\n :rtype: None\n \"\"\"\n\n\n def dequeueAny(self):\n \"\"\"\n :rtype: List[int]\n \"\"\"\n\n\n def dequeueDog(self):\n \"\"\"\n :rtype: List[int]\n \"\"\"\n\n\n def dequeueCat(self):\n \"\"\"\n :rtype: List[int]\n \"\"\"\n\n\n\n# Your AnimalShelf object will be instantiated and called as such:\n# obj = AnimalShelf()\n# obj.enqueue(animal)\n# param_2 = obj.dequeueAny()\n# param_3 = obj.dequeueDog()\n# param_4 = obj.dequeueCat()",
|
||
"__typename": "CodeSnippetNode"
|
||
},
|
||
{
|
||
"lang": "Python3",
|
||
"langSlug": "python3",
|
||
"code": "class AnimalShelf:\n\n def __init__(self):\n\n\n def enqueue(self, animal: List[int]) -> None:\n\n\n def dequeueAny(self) -> List[int]:\n\n\n def dequeueDog(self) -> List[int]:\n\n\n def dequeueCat(self) -> List[int]:\n\n\n\n# Your AnimalShelf object will be instantiated and called as such:\n# obj = AnimalShelf()\n# obj.enqueue(animal)\n# param_2 = obj.dequeueAny()\n# param_3 = obj.dequeueDog()\n# param_4 = obj.dequeueCat()",
|
||
"__typename": "CodeSnippetNode"
|
||
},
|
||
{
|
||
"lang": "C",
|
||
"langSlug": "c",
|
||
"code": "\n\n\ntypedef struct {\n\n} AnimalShelf;\n\n\nAnimalShelf* animalShelfCreate() {\n\n}\n\nvoid animalShelfEnqueue(AnimalShelf* obj, int* animal, int animalSize) {\n\n}\n\nint* animalShelfDequeueAny(AnimalShelf* obj, int* retSize) {\n\n}\n\nint* animalShelfDequeueDog(AnimalShelf* obj, int* retSize) {\n\n}\n\nint* animalShelfDequeueCat(AnimalShelf* obj, int* retSize) {\n\n}\n\nvoid animalShelfFree(AnimalShelf* obj) {\n\n}\n\n/**\n * Your AnimalShelf struct will be instantiated and called as such:\n * AnimalShelf* obj = animalShelfCreate();\n * animalShelfEnqueue(obj, animal, animalSize);\n \n * int* param_2 = animalShelfDequeueAny(obj, retSize);\n \n * int* param_3 = animalShelfDequeueDog(obj, retSize);\n \n * int* param_4 = animalShelfDequeueCat(obj, retSize);\n \n * animalShelfFree(obj);\n*/",
|
||
"__typename": "CodeSnippetNode"
|
||
},
|
||
{
|
||
"lang": "C#",
|
||
"langSlug": "csharp",
|
||
"code": "public class AnimalShelf {\n\n public AnimalShelf() {\n\n }\n \n public void Enqueue(int[] animal) {\n\n }\n \n public int[] DequeueAny() {\n\n }\n \n public int[] DequeueDog() {\n\n }\n \n public int[] DequeueCat() {\n\n }\n}\n\n/**\n * Your AnimalShelf object will be instantiated and called as such:\n * AnimalShelf obj = new AnimalShelf();\n * obj.Enqueue(animal);\n * int[] param_2 = obj.DequeueAny();\n * int[] param_3 = obj.DequeueDog();\n * int[] param_4 = obj.DequeueCat();\n */",
|
||
"__typename": "CodeSnippetNode"
|
||
},
|
||
{
|
||
"lang": "JavaScript",
|
||
"langSlug": "javascript",
|
||
"code": "\nvar AnimalShelf = function() {\n\n};\n\n/** \n * @param {number[]} animal\n * @return {void}\n */\nAnimalShelf.prototype.enqueue = function(animal) {\n\n};\n\n/**\n * @return {number[]}\n */\nAnimalShelf.prototype.dequeueAny = function() {\n\n};\n\n/**\n * @return {number[]}\n */\nAnimalShelf.prototype.dequeueDog = function() {\n\n};\n\n/**\n * @return {number[]}\n */\nAnimalShelf.prototype.dequeueCat = function() {\n\n};\n\n/**\n * Your AnimalShelf object will be instantiated and called as such:\n * var obj = new AnimalShelf()\n * obj.enqueue(animal)\n * var param_2 = obj.dequeueAny()\n * var param_3 = obj.dequeueDog()\n * var param_4 = obj.dequeueCat()\n */",
|
||
"__typename": "CodeSnippetNode"
|
||
},
|
||
{
|
||
"lang": "TypeScript",
|
||
"langSlug": "typescript",
|
||
"code": "class AnimalShelf {\n constructor() {\n\n }\n\n enqueue(animal: number[]): void {\n\n }\n\n dequeueAny(): number[] {\n\n }\n\n dequeueDog(): number[] {\n\n }\n\n dequeueCat(): number[] {\n\n }\n}\n\n/**\n * Your AnimalShelf object will be instantiated and called as such:\n * var obj = new AnimalShelf()\n * obj.enqueue(animal)\n * var param_2 = obj.dequeueAny()\n * var param_3 = obj.dequeueDog()\n * var param_4 = obj.dequeueCat()\n */",
|
||
"__typename": "CodeSnippetNode"
|
||
},
|
||
{
|
||
"lang": "PHP",
|
||
"langSlug": "php",
|
||
"code": "class AnimalShelf {\n /**\n */\n function __construct() {\n\n }\n\n /**\n * @param Integer[] $animal\n * @return NULL\n */\n function enqueue($animal) {\n\n }\n\n /**\n * @return Integer[]\n */\n function dequeueAny() {\n\n }\n\n /**\n * @return Integer[]\n */\n function dequeueDog() {\n\n }\n\n /**\n * @return Integer[]\n */\n function dequeueCat() {\n\n }\n}\n\n/**\n * Your AnimalShelf object will be instantiated and called as such:\n * $obj = AnimalShelf();\n * $obj->enqueue($animal);\n * $ret_2 = $obj->dequeueAny();\n * $ret_3 = $obj->dequeueDog();\n * $ret_4 = $obj->dequeueCat();\n */",
|
||
"__typename": "CodeSnippetNode"
|
||
},
|
||
{
|
||
"lang": "Swift",
|
||
"langSlug": "swift",
|
||
"code": "\nclass AnimalShelf {\n\n init() {\n\n }\n \n func enqueue(_ animal: [Int]) {\n\n }\n \n func dequeueAny() -> [Int] {\n\n }\n \n func dequeueDog() -> [Int] {\n\n }\n \n func dequeueCat() -> [Int] {\n\n }\n}\n\n/**\n * Your AnimalShelf object will be instantiated and called as such:\n * let obj = AnimalShelf()\n * obj.enqueue(animal)\n * let ret_2: [Int] = obj.dequeueAny()\n * let ret_3: [Int] = obj.dequeueDog()\n * let ret_4: [Int] = obj.dequeueCat()\n */",
|
||
"__typename": "CodeSnippetNode"
|
||
},
|
||
{
|
||
"lang": "Kotlin",
|
||
"langSlug": "kotlin",
|
||
"code": "class AnimalShelf() {\n\n fun enqueue(animal: IntArray) {\n\n }\n\n fun dequeueAny(): IntArray {\n\n }\n\n fun dequeueDog(): IntArray {\n\n }\n\n fun dequeueCat(): IntArray {\n\n }\n\n}\n\n/**\n * Your AnimalShelf object will be instantiated and called as such:\n * var obj = AnimalShelf()\n * obj.enqueue(animal)\n * var param_2 = obj.dequeueAny()\n * var param_3 = obj.dequeueDog()\n * var param_4 = obj.dequeueCat()\n */",
|
||
"__typename": "CodeSnippetNode"
|
||
},
|
||
{
|
||
"lang": "Dart",
|
||
"langSlug": "dart",
|
||
"code": "class AnimalShelf {\n\n AnimalShelf() {\n\n }\n \n void enqueue(List<int> animal) {\n\n }\n \n List<int> dequeueAny() {\n\n }\n \n List<int> dequeueDog() {\n\n }\n \n List<int> dequeueCat() {\n\n }\n}\n\n/**\n * Your AnimalShelf object will be instantiated and called as such:\n * AnimalShelf obj = AnimalShelf();\n * obj.enqueue(animal);\n * List<int> param2 = obj.dequeueAny();\n * List<int> param3 = obj.dequeueDog();\n * List<int> param4 = obj.dequeueCat();\n */",
|
||
"__typename": "CodeSnippetNode"
|
||
},
|
||
{
|
||
"lang": "Go",
|
||
"langSlug": "golang",
|
||
"code": "type AnimalShelf struct {\n\n}\n\n\nfunc Constructor() AnimalShelf {\n\n}\n\n\nfunc (this *AnimalShelf) Enqueue(animal []int) {\n\n}\n\n\nfunc (this *AnimalShelf) DequeueAny() []int {\n\n}\n\n\nfunc (this *AnimalShelf) DequeueDog() []int {\n\n}\n\n\nfunc (this *AnimalShelf) DequeueCat() []int {\n\n}\n\n\n/**\n * Your AnimalShelf object will be instantiated and called as such:\n * obj := Constructor();\n * obj.Enqueue(animal);\n * param_2 := obj.DequeueAny();\n * param_3 := obj.DequeueDog();\n * param_4 := obj.DequeueCat();\n */",
|
||
"__typename": "CodeSnippetNode"
|
||
},
|
||
{
|
||
"lang": "Ruby",
|
||
"langSlug": "ruby",
|
||
"code": "class AnimalShelf\n def initialize()\n\n end\n\n\n=begin\n :type animal: Integer[]\n :rtype: Void\n=end\n def enqueue(animal)\n\n end\n\n\n=begin\n :rtype: Integer[]\n=end\n def dequeue_any()\n\n end\n\n\n=begin\n :rtype: Integer[]\n=end\n def dequeue_dog()\n\n end\n\n\n=begin\n :rtype: Integer[]\n=end\n def dequeue_cat()\n\n end\n\n\nend\n\n# Your AnimalShelf object will be instantiated and called as such:\n# obj = AnimalShelf.new()\n# obj.enqueue(animal)\n# param_2 = obj.dequeue_any()\n# param_3 = obj.dequeue_dog()\n# param_4 = obj.dequeue_cat()",
|
||
"__typename": "CodeSnippetNode"
|
||
},
|
||
{
|
||
"lang": "Scala",
|
||
"langSlug": "scala",
|
||
"code": "class AnimalShelf() {\n\n def enqueue(animal: Array[Int]) {\n\n }\n\n def dequeueAny(): Array[Int] = {\n\n }\n\n def dequeueDog(): Array[Int] = {\n\n }\n\n def dequeueCat(): Array[Int] = {\n\n }\n\n}\n\n/**\n * Your AnimalShelf object will be instantiated and called as such:\n * var obj = new AnimalShelf()\n * obj.enqueue(animal)\n * var param_2 = obj.dequeueAny()\n * var param_3 = obj.dequeueDog()\n * var param_4 = obj.dequeueCat()\n */",
|
||
"__typename": "CodeSnippetNode"
|
||
},
|
||
{
|
||
"lang": "Rust",
|
||
"langSlug": "rust",
|
||
"code": "struct AnimalShelf {\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 AnimalShelf {\n\n fn new() -> Self {\n\n }\n \n fn enqueue(&self, animal: Vec<i32>) {\n\n }\n \n fn dequeue_any(&self) -> Vec<i32> {\n\n }\n \n fn dequeue_dog(&self) -> Vec<i32> {\n\n }\n \n fn dequeue_cat(&self) -> Vec<i32> {\n\n }\n}\n\n/**\n * Your AnimalShelf object will be instantiated and called as such:\n * let obj = AnimalShelf::new();\n * obj.enqueue(animal);\n * let ret_2: Vec<i32> = obj.dequeue_any();\n * let ret_3: Vec<i32> = obj.dequeue_dog();\n * let ret_4: Vec<i32> = obj.dequeue_cat();\n */",
|
||
"__typename": "CodeSnippetNode"
|
||
},
|
||
{
|
||
"lang": "Racket",
|
||
"langSlug": "racket",
|
||
"code": "(define animal-shelf%\n (class object%\n (super-new)\n (init-field)\n \n ; enqueue : (listof exact-integer?) -> void?\n (define/public (enqueue animal)\n\n )\n ; dequeue-any : -> (listof exact-integer?)\n (define/public (dequeue-any)\n\n )\n ; dequeue-dog : -> (listof exact-integer?)\n (define/public (dequeue-dog)\n\n )\n ; dequeue-cat : -> (listof exact-integer?)\n (define/public (dequeue-cat)\n\n )))\n\n;; Your animal-shelf% object will be instantiated and called as such:\n;; (define obj (new animal-shelf%))\n;; (send obj enqueue animal)\n;; (define param_2 (send obj dequeue-any))\n;; (define param_3 (send obj dequeue-dog))\n;; (define param_4 (send obj dequeue-cat))",
|
||
"__typename": "CodeSnippetNode"
|
||
},
|
||
{
|
||
"lang": "Erlang",
|
||
"langSlug": "erlang",
|
||
"code": "-spec animal_shelf_init_() -> any().\nanimal_shelf_init_() ->\n .\n\n-spec animal_shelf_enqueue(Animal :: [integer()]) -> any().\nanimal_shelf_enqueue(Animal) ->\n .\n\n-spec animal_shelf_dequeue_any() -> [integer()].\nanimal_shelf_dequeue_any() ->\n .\n\n-spec animal_shelf_dequeue_dog() -> [integer()].\nanimal_shelf_dequeue_dog() ->\n .\n\n-spec animal_shelf_dequeue_cat() -> [integer()].\nanimal_shelf_dequeue_cat() ->\n .\n\n\n%% Your functions will be called as such:\n%% animal_shelf_init_(),\n%% animal_shelf_enqueue(Animal),\n%% Param_2 = animal_shelf_dequeue_any(),\n%% Param_3 = animal_shelf_dequeue_dog(),\n%% Param_4 = animal_shelf_dequeue_cat(),\n\n%% animal_shelf_init_ will be called before every test case, in which you can do some necessary initializations.",
|
||
"__typename": "CodeSnippetNode"
|
||
},
|
||
{
|
||
"lang": "Elixir",
|
||
"langSlug": "elixir",
|
||
"code": "defmodule AnimalShelf do\n @spec init_() :: any\n def init_() do\n\n end\n\n @spec enqueue(animal :: [integer]) :: any\n def enqueue(animal) do\n\n end\n\n @spec dequeue_any() :: [integer]\n def dequeue_any() do\n\n end\n\n @spec dequeue_dog() :: [integer]\n def dequeue_dog() do\n\n end\n\n @spec dequeue_cat() :: [integer]\n def dequeue_cat() do\n\n end\nend\n\n# Your functions will be called as such:\n# AnimalShelf.init_()\n# AnimalShelf.enqueue(animal)\n# param_2 = AnimalShelf.dequeue_any()\n# param_3 = AnimalShelf.dequeue_dog()\n# param_4 = AnimalShelf.dequeue_cat()\n\n# AnimalShelf.init_ will be called before every test case, in which you can do some necessary initializations.",
|
||
"__typename": "CodeSnippetNode"
|
||
}
|
||
],
|
||
"stats": "{\"totalAccepted\": \"20.5K\", \"totalSubmission\": \"35.3K\", \"totalAcceptedRaw\": 20505, \"totalSubmissionRaw\": 35274, \"acRate\": \"58.1%\"}",
|
||
"hints": [
|
||
"让我们假设用不同的列表存储猫和狗。怎样才能找到所有物种中最老的动物呢?要有创意。",
|
||
"可以考虑为狗和猫保留一个链表,然后遍历它找到第一只狗(或猫)。这样做的影响是什么?",
|
||
"想想现实生活中你是怎么做的。你有一个按时间排序的狗列表和一个按时间排序的猫列表。你需要什么数据才能找到最老的动物?你将如何维护这些数据?"
|
||
],
|
||
"solution": null,
|
||
"status": null,
|
||
"sampleTestCase": "[\"AnimalShelf\", \"enqueue\", \"enqueue\", \"dequeueCat\", \"dequeueDog\", \"dequeueAny\"]\n[[], [[0, 0]], [[1, 0]], [], [], []]",
|
||
"metaData": "{\"classname\": \"AnimalShelf\", \"maxbytesperline\": 200000, \"systemdesign\": true, \"constructor\": {\"params\": []}, \"methods\": [{\"name\": \"enqueue\", \"params\": [{\"name\": \"animal\", \"type\": \"integer[]\"}], \"return\": {\"type\": \"void\"}}, {\"name\": \"dequeueAny\", \"params\": [], \"return\": {\"type\": \"integer[]\"}}, {\"name\": \"dequeueDog\", \"params\": [], \"return\": {\"type\": \"integer[]\"}}, {\"name\": \"dequeueCat\", \"params\": [], \"return\": {\"type\": \"integer[]\"}}], \"params\": [{\"name\": \"inputs\", \"type\": \"integer[]\"}, {\"name\": \"inputs\", \"type\": \"integer[]\"}], \"return\": {\"type\": \"list<String>\", \"dealloc\": true}}",
|
||
"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": {
|
||
"id": "2",
|
||
"bookName": "《程序员面试金典(第 6 版)》",
|
||
"pressName": "图灵公司",
|
||
"source": "《程序员面试金典(第 6 版)》独家授权",
|
||
"shortDescription": "英文版:Cracking the Coding Interview,源自硅谷程序员的面试红宝书",
|
||
"fullDescription": "本书是原谷歌资深面试官的经验之作,帮助了许多想要加入脸书、苹果、谷歌等 IT 名企的求职者拿到 Dream offer。本专题的 100+ 编程面试题是在原书基础上精心挑选出来的,帮助你轻松应战 IT 名企技术面试。",
|
||
"bookImgUrl": "https://assets.leetcode-cn.com/aliyun-lc-upload/uploads/2019/09/30/book_2.jpg",
|
||
"pressImgUrl": "https://assets.leetcode-cn.com/aliyun-lc-upload/uploads/2020/02/11/logo20190828-02.png",
|
||
"productUrl": "",
|
||
"__typename": "CategoryInfoNode"
|
||
},
|
||
"isSubscribed": false,
|
||
"isDailyQuestion": false,
|
||
"dailyRecordStatus": null,
|
||
"editorType": "CKEDITOR",
|
||
"ugcQuestionId": null,
|
||
"style": "LEETCODE",
|
||
"exampleTestcases": "",
|
||
"__typename": "QuestionNode"
|
||
}
|
||
}
|
||
} |