1
0
mirror of https://gitee.com/coder-xiaomo/leetcode-problemset synced 2025-01-11 02:58:13 +08:00
Code Issues Projects Releases Wiki Activity GitHub Gitee
leetcode-problemset/leetcode-cn/originData/design-linked-list.json
2022-05-02 23:44:12 +08:00

168 lines
34 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": "838",
"questionFrontendId": "707",
"categoryTitle": "Algorithms",
"boundTopicId": 1366,
"title": "Design Linked List",
"titleSlug": "design-linked-list",
"content": "<p>Design your implementation of the linked list. You can choose to use a singly or doubly linked list.<br />\nA node in a singly linked list should have two attributes: <code>val</code> and <code>next</code>. <code>val</code> is the value of the current node, and <code>next</code> is a pointer/reference to the next node.<br />\nIf you want to use the doubly linked list, you will need one more attribute <code>prev</code> to indicate the previous node in the linked list. Assume all nodes in the linked list are <strong>0-indexed</strong>.</p>\n\n<p>Implement the <code>MyLinkedList</code> class:</p>\n\n<ul>\n\t<li><code>MyLinkedList()</code> Initializes the <code>MyLinkedList</code> object.</li>\n\t<li><code>int get(int index)</code> Get the value of the <code>index<sup>th</sup></code> node in the linked list. If the index is invalid, return <code>-1</code>.</li>\n\t<li><code>void addAtHead(int val)</code> Add a node of value <code>val</code> before the first element of the linked list. After the insertion, the new node will be the first node of the linked list.</li>\n\t<li><code>void addAtTail(int val)</code> Append a node of value <code>val</code> as the last element of the linked list.</li>\n\t<li><code>void addAtIndex(int index, int val)</code> Add a node of value <code>val</code> before the <code>index<sup>th</sup></code> node in the linked list. If <code>index</code> equals the length of the linked list, the node will be appended to the end of the linked list. If <code>index</code> is greater than the length, the node <strong>will not be inserted</strong>.</li>\n\t<li><code>void deleteAtIndex(int index)</code> Delete the <code>index<sup>th</sup></code> node in the linked list, if the index is valid.</li>\n</ul>\n\n<p>&nbsp;</p>\n<p><strong>Example 1:</strong></p>\n\n<pre>\n<strong>Input</strong>\n[&quot;MyLinkedList&quot;, &quot;addAtHead&quot;, &quot;addAtTail&quot;, &quot;addAtIndex&quot;, &quot;get&quot;, &quot;deleteAtIndex&quot;, &quot;get&quot;]\n[[], [1], [3], [1, 2], [1], [1], [1]]\n<strong>Output</strong>\n[null, null, null, null, 2, null, 3]\n\n<strong>Explanation</strong>\nMyLinkedList myLinkedList = new MyLinkedList();\nmyLinkedList.addAtHead(1);\nmyLinkedList.addAtTail(3);\nmyLinkedList.addAtIndex(1, 2); // linked list becomes 1-&gt;2-&gt;3\nmyLinkedList.get(1); // return 2\nmyLinkedList.deleteAtIndex(1); // now the linked list is 1-&gt;3\nmyLinkedList.get(1); // return 3\n</pre>\n\n<p>&nbsp;</p>\n<p><strong>Constraints:</strong></p>\n\n<ul>\n\t<li><code>0 &lt;= index, val &lt;= 1000</code></li>\n\t<li>Please do not use the built-in LinkedList library.</li>\n\t<li>At most <code>2000</code> calls will be made to <code>get</code>, <code>addAtHead</code>, <code>addAtTail</code>, <code>addAtIndex</code> and <code>deleteAtIndex</code>.</li>\n</ul>\n",
"translatedTitle": "设计链表",
"translatedContent": "<p>设计链表的实现。您可以选择使用单链表或双链表。单链表中的节点应该具有两个属性:<code>val</code>&nbsp;和&nbsp;<code>next</code>。<code>val</code>&nbsp;是当前节点的值,<code>next</code>&nbsp;是指向下一个节点的指针/引用。如果要使用双向链表,则还需要一个属性&nbsp;<code>prev</code>&nbsp;以指示链表中的上一个节点。假设链表中的所有节点都是 0-index 的。</p>\n\n<p>在链表类中实现这些功能:</p>\n\n<ul>\n\t<li>get(index):获取链表中第&nbsp;<code>index</code>&nbsp;个节点的值。如果索引无效,则返回<code>-1</code>。</li>\n\t<li>addAtHead(val):在链表的第一个元素之前添加一个值为&nbsp;<code>val</code>&nbsp;的节点。插入后,新节点将成为链表的第一个节点。</li>\n\t<li>addAtTail(val):将值为&nbsp;<code>val</code> 的节点追加到链表的最后一个元素。</li>\n\t<li>addAtIndex(index,val):在链表中的第&nbsp;<code>index</code>&nbsp;个节点之前添加值为&nbsp;<code>val</code>&nbsp; 的节点。如果&nbsp;<code>index</code>&nbsp;等于链表的长度,则该节点将附加到链表的末尾。如果 <code>index</code> 大于链表长度,则不会插入节点。如果<code>index</code>小于0则在头部插入节点。</li>\n\t<li>deleteAtIndex(index):如果索引&nbsp;<code>index</code> 有效,则删除链表中的第&nbsp;<code>index</code> 个节点。</li>\n</ul>\n\n<p>&nbsp;</p>\n\n<p><strong>示例:</strong></p>\n\n<pre>MyLinkedList linkedList = new MyLinkedList();\nlinkedList.addAtHead(1);\nlinkedList.addAtTail(3);\nlinkedList.addAtIndex(1,2); //链表变为1-&gt; 2-&gt; 3\nlinkedList.get(1); //返回2\nlinkedList.deleteAtIndex(1); //现在链表是1-&gt; 3\nlinkedList.get(1); //返回3\n</pre>\n\n<p>&nbsp;</p>\n\n<p><strong>提示:</strong></p>\n\n<ul>\n\t<li>所有<code>val</code>值都在&nbsp;<code>[1, 1000]</code>&nbsp;之内。</li>\n\t<li>操作次数将在&nbsp;&nbsp;<code>[1, 1000]</code>&nbsp;之内。</li>\n\t<li>请不要使用内置的 LinkedList 库。</li>\n</ul>\n",
"isPaidOnly": false,
"difficulty": "Medium",
"likes": 428,
"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, \"ruby\": false, \"bash\": false, \"swift\": false, \"golang\": false, \"scala\": false, \"html\": false, \"pythonml\": false, \"kotlin\": false, \"rust\": false, \"php\": false, \"typescript\": false, \"racket\": false, \"erlang\": false, \"elixir\": false}",
"topicTags": [
{
"name": "Design",
"slug": "design",
"translatedName": "设计",
"__typename": "TopicTagNode"
},
{
"name": "Linked List",
"slug": "linked-list",
"translatedName": "链表",
"__typename": "TopicTagNode"
}
],
"companyTagStats": null,
"codeSnippets": [
{
"lang": "C++",
"langSlug": "cpp",
"code": "class MyLinkedList {\npublic:\n MyLinkedList() {\n\n }\n \n int get(int index) {\n\n }\n \n void addAtHead(int val) {\n\n }\n \n void addAtTail(int val) {\n\n }\n \n void addAtIndex(int index, int val) {\n\n }\n \n void deleteAtIndex(int index) {\n\n }\n};\n\n/**\n * Your MyLinkedList object will be instantiated and called as such:\n * MyLinkedList* obj = new MyLinkedList();\n * int param_1 = obj->get(index);\n * obj->addAtHead(val);\n * obj->addAtTail(val);\n * obj->addAtIndex(index,val);\n * obj->deleteAtIndex(index);\n */",
"__typename": "CodeSnippetNode"
},
{
"lang": "Java",
"langSlug": "java",
"code": "class MyLinkedList {\n\n public MyLinkedList() {\n\n }\n \n public int get(int index) {\n\n }\n \n public void addAtHead(int val) {\n\n }\n \n public void addAtTail(int val) {\n\n }\n \n public void addAtIndex(int index, int val) {\n\n }\n \n public void deleteAtIndex(int index) {\n\n }\n}\n\n/**\n * Your MyLinkedList object will be instantiated and called as such:\n * MyLinkedList obj = new MyLinkedList();\n * int param_1 = obj.get(index);\n * obj.addAtHead(val);\n * obj.addAtTail(val);\n * obj.addAtIndex(index,val);\n * obj.deleteAtIndex(index);\n */",
"__typename": "CodeSnippetNode"
},
{
"lang": "Python",
"langSlug": "python",
"code": "class MyLinkedList(object):\n\n def __init__(self):\n\n\n def get(self, index):\n \"\"\"\n :type index: int\n :rtype: int\n \"\"\"\n\n\n def addAtHead(self, val):\n \"\"\"\n :type val: int\n :rtype: None\n \"\"\"\n\n\n def addAtTail(self, val):\n \"\"\"\n :type val: int\n :rtype: None\n \"\"\"\n\n\n def addAtIndex(self, index, val):\n \"\"\"\n :type index: int\n :type val: int\n :rtype: None\n \"\"\"\n\n\n def deleteAtIndex(self, index):\n \"\"\"\n :type index: int\n :rtype: None\n \"\"\"\n\n\n\n# Your MyLinkedList object will be instantiated and called as such:\n# obj = MyLinkedList()\n# param_1 = obj.get(index)\n# obj.addAtHead(val)\n# obj.addAtTail(val)\n# obj.addAtIndex(index,val)\n# obj.deleteAtIndex(index)",
"__typename": "CodeSnippetNode"
},
{
"lang": "Python3",
"langSlug": "python3",
"code": "class MyLinkedList:\n\n def __init__(self):\n\n\n def get(self, index: int) -> int:\n\n\n def addAtHead(self, val: int) -> None:\n\n\n def addAtTail(self, val: int) -> None:\n\n\n def addAtIndex(self, index: int, val: int) -> None:\n\n\n def deleteAtIndex(self, index: int) -> None:\n\n\n\n# Your MyLinkedList object will be instantiated and called as such:\n# obj = MyLinkedList()\n# param_1 = obj.get(index)\n# obj.addAtHead(val)\n# obj.addAtTail(val)\n# obj.addAtIndex(index,val)\n# obj.deleteAtIndex(index)",
"__typename": "CodeSnippetNode"
},
{
"lang": "C",
"langSlug": "c",
"code": "\n\n\ntypedef struct {\n\n} MyLinkedList;\n\n\nMyLinkedList* myLinkedListCreate() {\n\n}\n\nint myLinkedListGet(MyLinkedList* obj, int index) {\n\n}\n\nvoid myLinkedListAddAtHead(MyLinkedList* obj, int val) {\n\n}\n\nvoid myLinkedListAddAtTail(MyLinkedList* obj, int val) {\n\n}\n\nvoid myLinkedListAddAtIndex(MyLinkedList* obj, int index, int val) {\n\n}\n\nvoid myLinkedListDeleteAtIndex(MyLinkedList* obj, int index) {\n\n}\n\nvoid myLinkedListFree(MyLinkedList* obj) {\n\n}\n\n/**\n * Your MyLinkedList struct will be instantiated and called as such:\n * MyLinkedList* obj = myLinkedListCreate();\n * int param_1 = myLinkedListGet(obj, index);\n \n * myLinkedListAddAtHead(obj, val);\n \n * myLinkedListAddAtTail(obj, val);\n \n * myLinkedListAddAtIndex(obj, index, val);\n \n * myLinkedListDeleteAtIndex(obj, index);\n \n * myLinkedListFree(obj);\n*/",
"__typename": "CodeSnippetNode"
},
{
"lang": "C#",
"langSlug": "csharp",
"code": "public class MyLinkedList {\n\n public MyLinkedList() {\n\n }\n \n public int Get(int index) {\n\n }\n \n public void AddAtHead(int val) {\n\n }\n \n public void AddAtTail(int val) {\n\n }\n \n public void AddAtIndex(int index, int val) {\n\n }\n \n public void DeleteAtIndex(int index) {\n\n }\n}\n\n/**\n * Your MyLinkedList object will be instantiated and called as such:\n * MyLinkedList obj = new MyLinkedList();\n * int param_1 = obj.Get(index);\n * obj.AddAtHead(val);\n * obj.AddAtTail(val);\n * obj.AddAtIndex(index,val);\n * obj.DeleteAtIndex(index);\n */",
"__typename": "CodeSnippetNode"
},
{
"lang": "JavaScript",
"langSlug": "javascript",
"code": "\nvar MyLinkedList = function() {\n\n};\n\n/** \n * @param {number} index\n * @return {number}\n */\nMyLinkedList.prototype.get = function(index) {\n\n};\n\n/** \n * @param {number} val\n * @return {void}\n */\nMyLinkedList.prototype.addAtHead = function(val) {\n\n};\n\n/** \n * @param {number} val\n * @return {void}\n */\nMyLinkedList.prototype.addAtTail = function(val) {\n\n};\n\n/** \n * @param {number} index \n * @param {number} val\n * @return {void}\n */\nMyLinkedList.prototype.addAtIndex = function(index, val) {\n\n};\n\n/** \n * @param {number} index\n * @return {void}\n */\nMyLinkedList.prototype.deleteAtIndex = function(index) {\n\n};\n\n/**\n * Your MyLinkedList object will be instantiated and called as such:\n * var obj = new MyLinkedList()\n * var param_1 = obj.get(index)\n * obj.addAtHead(val)\n * obj.addAtTail(val)\n * obj.addAtIndex(index,val)\n * obj.deleteAtIndex(index)\n */",
"__typename": "CodeSnippetNode"
},
{
"lang": "Ruby",
"langSlug": "ruby",
"code": "class MyLinkedList\n def initialize()\n\n end\n\n\n=begin\n :type index: Integer\n :rtype: Integer\n=end\n def get(index)\n\n end\n\n\n=begin\n :type val: Integer\n :rtype: Void\n=end\n def add_at_head(val)\n\n end\n\n\n=begin\n :type val: Integer\n :rtype: Void\n=end\n def add_at_tail(val)\n\n end\n\n\n=begin\n :type index: Integer\n :type val: Integer\n :rtype: Void\n=end\n def add_at_index(index, val)\n\n end\n\n\n=begin\n :type index: Integer\n :rtype: Void\n=end\n def delete_at_index(index)\n\n end\n\n\nend\n\n# Your MyLinkedList object will be instantiated and called as such:\n# obj = MyLinkedList.new()\n# param_1 = obj.get(index)\n# obj.add_at_head(val)\n# obj.add_at_tail(val)\n# obj.add_at_index(index, val)\n# obj.delete_at_index(index)",
"__typename": "CodeSnippetNode"
},
{
"lang": "Swift",
"langSlug": "swift",
"code": "\nclass MyLinkedList {\n\n init() {\n\n }\n \n func get(_ index: Int) -> Int {\n\n }\n \n func addAtHead(_ val: Int) {\n\n }\n \n func addAtTail(_ val: Int) {\n\n }\n \n func addAtIndex(_ index: Int, _ val: Int) {\n\n }\n \n func deleteAtIndex(_ index: Int) {\n\n }\n}\n\n/**\n * Your MyLinkedList object will be instantiated and called as such:\n * let obj = MyLinkedList()\n * let ret_1: Int = obj.get(index)\n * obj.addAtHead(val)\n * obj.addAtTail(val)\n * obj.addAtIndex(index, val)\n * obj.deleteAtIndex(index)\n */",
"__typename": "CodeSnippetNode"
},
{
"lang": "Go",
"langSlug": "golang",
"code": "type MyLinkedList struct {\n\n}\n\n\nfunc Constructor() MyLinkedList {\n\n}\n\n\nfunc (this *MyLinkedList) Get(index int) int {\n\n}\n\n\nfunc (this *MyLinkedList) AddAtHead(val int) {\n\n}\n\n\nfunc (this *MyLinkedList) AddAtTail(val int) {\n\n}\n\n\nfunc (this *MyLinkedList) AddAtIndex(index int, val int) {\n\n}\n\n\nfunc (this *MyLinkedList) DeleteAtIndex(index int) {\n\n}\n\n\n/**\n * Your MyLinkedList object will be instantiated and called as such:\n * obj := Constructor();\n * param_1 := obj.Get(index);\n * obj.AddAtHead(val);\n * obj.AddAtTail(val);\n * obj.AddAtIndex(index,val);\n * obj.DeleteAtIndex(index);\n */",
"__typename": "CodeSnippetNode"
},
{
"lang": "Scala",
"langSlug": "scala",
"code": "class MyLinkedList() {\n\n def get(index: Int): Int = {\n\n }\n\n def addAtHead(`val`: Int) {\n\n }\n\n def addAtTail(`val`: Int) {\n\n }\n\n def addAtIndex(index: Int, `val`: Int) {\n\n }\n\n def deleteAtIndex(index: Int) {\n\n }\n\n}\n\n/**\n * Your MyLinkedList object will be instantiated and called as such:\n * var obj = new MyLinkedList()\n * var param_1 = obj.get(index)\n * obj.addAtHead(`val`)\n * obj.addAtTail(`val`)\n * obj.addAtIndex(index,`val`)\n * obj.deleteAtIndex(index)\n */",
"__typename": "CodeSnippetNode"
},
{
"lang": "Kotlin",
"langSlug": "kotlin",
"code": "class MyLinkedList() {\n\n fun get(index: Int): Int {\n\n }\n\n fun addAtHead(`val`: Int) {\n\n }\n\n fun addAtTail(`val`: Int) {\n\n }\n\n fun addAtIndex(index: Int, `val`: Int) {\n\n }\n\n fun deleteAtIndex(index: Int) {\n\n }\n\n}\n\n/**\n * Your MyLinkedList object will be instantiated and called as such:\n * var obj = MyLinkedList()\n * var param_1 = obj.get(index)\n * obj.addAtHead(`val`)\n * obj.addAtTail(`val`)\n * obj.addAtIndex(index,`val`)\n * obj.deleteAtIndex(index)\n */",
"__typename": "CodeSnippetNode"
},
{
"lang": "Rust",
"langSlug": "rust",
"code": "struct MyLinkedList {\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 MyLinkedList {\n\n fn new() -> Self {\n\n }\n \n fn get(&self, index: i32) -> i32 {\n\n }\n \n fn add_at_head(&self, val: i32) {\n\n }\n \n fn add_at_tail(&self, val: i32) {\n\n }\n \n fn add_at_index(&self, index: i32, val: i32) {\n\n }\n \n fn delete_at_index(&self, index: i32) {\n\n }\n}\n\n/**\n * Your MyLinkedList object will be instantiated and called as such:\n * let obj = MyLinkedList::new();\n * let ret_1: i32 = obj.get(index);\n * obj.add_at_head(val);\n * obj.add_at_tail(val);\n * obj.add_at_index(index, val);\n * obj.delete_at_index(index);\n */",
"__typename": "CodeSnippetNode"
},
{
"lang": "PHP",
"langSlug": "php",
"code": "class MyLinkedList {\n /**\n */\n function __construct() {\n\n }\n\n /**\n * @param Integer $index\n * @return Integer\n */\n function get($index) {\n\n }\n\n /**\n * @param Integer $val\n * @return NULL\n */\n function addAtHead($val) {\n\n }\n\n /**\n * @param Integer $val\n * @return NULL\n */\n function addAtTail($val) {\n\n }\n\n /**\n * @param Integer $index\n * @param Integer $val\n * @return NULL\n */\n function addAtIndex($index, $val) {\n\n }\n\n /**\n * @param Integer $index\n * @return NULL\n */\n function deleteAtIndex($index) {\n\n }\n}\n\n/**\n * Your MyLinkedList object will be instantiated and called as such:\n * $obj = MyLinkedList();\n * $ret_1 = $obj->get($index);\n * $obj->addAtHead($val);\n * $obj->addAtTail($val);\n * $obj->addAtIndex($index, $val);\n * $obj->deleteAtIndex($index);\n */",
"__typename": "CodeSnippetNode"
},
{
"lang": "TypeScript",
"langSlug": "typescript",
"code": "class MyLinkedList {\n constructor() {\n\n }\n\n get(index: number): number {\n\n }\n\n addAtHead(val: number): void {\n\n }\n\n addAtTail(val: number): void {\n\n }\n\n addAtIndex(index: number, val: number): void {\n\n }\n\n deleteAtIndex(index: number): void {\n\n }\n}\n\n/**\n * Your MyLinkedList object will be instantiated and called as such:\n * var obj = new MyLinkedList()\n * var param_1 = obj.get(index)\n * obj.addAtHead(val)\n * obj.addAtTail(val)\n * obj.addAtIndex(index,val)\n * obj.deleteAtIndex(index)\n */",
"__typename": "CodeSnippetNode"
},
{
"lang": "Racket",
"langSlug": "racket",
"code": "(define my-linked-list%\n (class object%\n (super-new)\n (init-field)\n \n ; get : exact-integer? -> exact-integer?\n (define/public (get index)\n\n )\n ; add-at-head : exact-integer? -> void?\n (define/public (add-at-head val)\n\n )\n ; add-at-tail : exact-integer? -> void?\n (define/public (add-at-tail val)\n\n )\n ; add-at-index : exact-integer? exact-integer? -> void?\n (define/public (add-at-index index val)\n\n )\n ; delete-at-index : exact-integer? -> void?\n (define/public (delete-at-index index)\n\n )))\n\n;; Your my-linked-list% object will be instantiated and called as such:\n;; (define obj (new my-linked-list%))\n;; (define param_1 (send obj get index))\n;; (send obj add-at-head val)\n;; (send obj add-at-tail val)\n;; (send obj add-at-index index val)\n;; (send obj delete-at-index index)",
"__typename": "CodeSnippetNode"
},
{
"lang": "Erlang",
"langSlug": "erlang",
"code": "-spec my_linked_list_init_() -> any().\nmy_linked_list_init_() ->\n .\n\n-spec my_linked_list_get(Index :: integer()) -> integer().\nmy_linked_list_get(Index) ->\n .\n\n-spec my_linked_list_add_at_head(Val :: integer()) -> any().\nmy_linked_list_add_at_head(Val) ->\n .\n\n-spec my_linked_list_add_at_tail(Val :: integer()) -> any().\nmy_linked_list_add_at_tail(Val) ->\n .\n\n-spec my_linked_list_add_at_index(Index :: integer(), Val :: integer()) -> any().\nmy_linked_list_add_at_index(Index, Val) ->\n .\n\n-spec my_linked_list_delete_at_index(Index :: integer()) -> any().\nmy_linked_list_delete_at_index(Index) ->\n .\n\n\n%% Your functions will be called as such:\n%% my_linked_list_init_(),\n%% Param_1 = my_linked_list_get(Index),\n%% my_linked_list_add_at_head(Val),\n%% my_linked_list_add_at_tail(Val),\n%% my_linked_list_add_at_index(Index, Val),\n%% my_linked_list_delete_at_index(Index),\n\n%% my_linked_list_init_ will be called before every test case, in which you can do some necessary initializations.",
"__typename": "CodeSnippetNode"
},
{
"lang": "Elixir",
"langSlug": "elixir",
"code": "defmodule MyLinkedList do\n @spec init_() :: any\n def init_() do\n\n end\n\n @spec get(index :: integer) :: integer\n def get(index) do\n\n end\n\n @spec add_at_head(val :: integer) :: any\n def add_at_head(val) do\n\n end\n\n @spec add_at_tail(val :: integer) :: any\n def add_at_tail(val) do\n\n end\n\n @spec add_at_index(index :: integer, val :: integer) :: any\n def add_at_index(index, val) do\n\n end\n\n @spec delete_at_index(index :: integer) :: any\n def delete_at_index(index) do\n\n end\nend\n\n# Your functions will be called as such:\n# MyLinkedList.init_()\n# param_1 = MyLinkedList.get(index)\n# MyLinkedList.add_at_head(val)\n# MyLinkedList.add_at_tail(val)\n# MyLinkedList.add_at_index(index, val)\n# MyLinkedList.delete_at_index(index)\n\n# MyLinkedList.init_ will be called before every test case, in which you can do some necessary initializations.",
"__typename": "CodeSnippetNode"
}
],
"stats": "{\"totalAccepted\": \"109.5K\", \"totalSubmission\": \"327.7K\", \"totalAcceptedRaw\": 109460, \"totalSubmissionRaw\": 327656, \"acRate\": \"33.4%\"}",
"hints": [],
"solution": null,
"status": null,
"sampleTestCase": "[\"MyLinkedList\",\"addAtHead\",\"addAtTail\",\"addAtIndex\",\"get\",\"deleteAtIndex\",\"get\"]\n[[],[1],[3],[1,2],[1],[1],[1]]",
"metaData": "{\n \"classname\": \"MyLinkedList\",\n \"constructor\": {\n \"params\": []\n },\n \"methods\": [\n {\n \"params\": [\n {\n \"type\": \"integer\",\n \"name\": \"index\"\n }\n ],\n \"return\": {\n \"type\": \"integer\"\n },\n \"name\": \"get\"\n },\n {\n \"params\": [\n {\n \"type\": \"integer\",\n \"name\": \"val\"\n }\n ],\n \"return\": {\n \"type\": \"void\"\n },\n \"name\": \"addAtHead\"\n },\n {\n \"params\": [\n {\n \"type\": \"integer\",\n \"name\": \"val\"\n }\n ],\n \"return\": {\n \"type\": \"void\"\n },\n \"name\": \"addAtTail\"\n },\n {\n \"params\": [\n {\n \"type\": \"integer\",\n \"name\": \"index\"\n },\n {\n \"type\": \"integer\",\n \"name\": \"val\"\n }\n ],\n \"return\": {\n \"type\": \"void\"\n },\n \"name\": \"addAtIndex\"\n },\n {\n \"params\": [\n {\n \"type\": \"integer\",\n \"name\": \"index\"\n }\n ],\n \"return\": {\n \"type\": \"void\"\n },\n \"name\": \"deleteAtIndex\"\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++ 17\\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\\u7528GNU99\\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>\\r\\n\\r\\n<p>\\u60a8\\u7684\\u4ee3\\u7801\\u5728\\u7f16\\u8bd1\\u65f6\\u9ed8\\u8ba4\\u5f00\\u542f\\u4e86debug\\u6807\\u8bb0(<code>\\/debug:pdbonly<\\/code>)\\u3002<\\/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\\\" target=\\\"_blank\\\"> datastructures-js\\/priority-queue<\\/a> \\u548c <a href=\\\"https:\\/\\/github.com\\/datastructures-js\\/queue\\\" target=\\\"_blank\\\"> datastructures-js\\/queue<\\/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.17<\\/code><\\/p>\\r\\n\\r\\n<p>\\u652f\\u6301 <a href=\\\"https:\\/\\/godoc.org\\/github.com\\/emirpasic\\/gods\\\" target=\\\"_blank\\\">https:\\/\\/godoc.org\\/github.com\\/emirpasic\\/gods<\\/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.3.10<\\/code><\\/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 4.5.4<\\/p>\\r\\n\\r\\n<p>Compile Options: --alwaysStrict --strictBindCallApply --strictFunctionTypes --target ES2020<\\/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\"]}",
"book": null,
"isSubscribed": false,
"isDailyQuestion": false,
"dailyRecordStatus": null,
"editorType": "CKEDITOR",
"ugcQuestionId": null,
"style": "LEETCODE",
"exampleTestcases": "[\"MyLinkedList\",\"addAtHead\",\"addAtTail\",\"addAtIndex\",\"get\",\"deleteAtIndex\",\"get\"]\n[[],[1],[3],[1,2],[1],[1],[1]]",
"__typename": "QuestionNode"
}
}
}