-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathFortPu.json
193 lines (193 loc) · 33 KB
/
FortPu.json
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
{
"data": {
"question": {
"questionId": "1000267",
"questionFrontendId": "LCR 030",
"categoryTitle": "Algorithms",
"boundTopicId": 910266,
"title": "O(1) 时间插入、删除和获取随机元素",
"titleSlug": "FortPu",
"content": "<p> </p>\n\n<p>English description is not available for the problem. Please switch to Chinese.</p>\n",
"translatedTitle": "O(1) 时间插入、删除和获取随机元素",
"translatedContent": "<p>设计一个支持在<em>平均 </em>时间复杂度 <strong>O(1)</strong> 下,执行以下操作的数据结构:</p>\n\n<ul>\n\t<li><code>insert(val)</code>:当元素 <code>val</code> 不存在时返回 <code>true</code> ,并向集合中插入该项,否则返回 <code>false</code> 。</li>\n\t<li><code>remove(val)</code>:当元素 <code>val</code> 存在时返回 <code>true</code> ,并从集合中移除该项,否则返回 <code>false</code> 。</li>\n\t<li><code>getRandom</code>:随机返回现有集合中的一项。每个元素应该有 <strong>相同的概率 </strong>被返回。</li>\n</ul>\n\n<p> </p>\n\n<p><strong>示例 :</strong></p>\n\n<pre>\n<strong>输入: </strong>inputs = ["RandomizedSet", "insert", "remove", "insert", "getRandom", "remove", "insert", "getRandom"]\n[[], [1], [2], [2], [], [1], [2], []]\n<strong>输出: </strong>[null, true, false, true, 2, true, false, 2]\n<strong>解释:\n</strong>RandomizedSet randomSet = new RandomizedSet(); // 初始化一个空的集合\nrandomSet.insert(1); // 向集合中插入 1 , 返回 true 表示 1 被成功地插入\n\nrandomSet.remove(2); // 返回 false,表示集合中不存在 2 \n\nrandomSet.insert(2); // 向集合中插入 2 返回 true ,集合现在包含 [1,2] \n\nrandomSet.getRandom(); // getRandom 应随机返回 1 或 2 \n \nrandomSet.remove(1); // 从集合中移除 1 返回 true 。集合现在包含 [2] \n\nrandomSet.insert(2); // 2 已在集合中,所以返回 false \n\nrandomSet.getRandom(); // 由于 2 是集合中唯一的数字,getRandom 总是返回 2 \n</pre>\n\n<p> </p>\n\n<p><strong>提示:</strong><meta charset=\"UTF-8\" /></p>\n\n<ul>\n\t<li><code>-2<sup>31</sup> <= val <= 2<sup>31</sup> - 1</code></li>\n\t<li>最多进行<code> 2 * 10<sup>5</sup></code> 次 <code>insert</code> , <code>remove</code> 和 <code>getRandom</code> 方法调用</li>\n\t<li>当调用 <code>getRandom</code> 方法时,集合中至少有一个元素</li>\n</ul>\n\n<p> </p>\n\n<p><meta charset=\"UTF-8\" />注意:本题与主站 380 题相同:<a href=\"https://leetcode-cn.com/problems/insert-delete-getrandom-o1/\">https://leetcode-cn.com/problems/insert-delete-getrandom-o1/</a></p>\n",
"isPaidOnly": false,
"difficulty": "Medium",
"likes": 75,
"dislikes": 0,
"isLiked": null,
"similarQuestions": "[]",
"contributors": [
{
"username": "LeetCode",
"profileUrl": "/u/leetcode",
"avatarUrl": "https://assets.leetcode.cn/aliyun-lc-upload/uploaded_files/2021/03/73c9f099-abbe-4d94-853f-f8abffd459cd/leetcode.png",
"__typename": "ContributorNode"
}
],
"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": "Array",
"slug": "array",
"translatedName": "数组",
"__typename": "TopicTagNode"
},
{
"name": "Hash Table",
"slug": "hash-table",
"translatedName": "哈希表",
"__typename": "TopicTagNode"
},
{
"name": "Math",
"slug": "math",
"translatedName": "数学",
"__typename": "TopicTagNode"
},
{
"name": "Randomized",
"slug": "randomized",
"translatedName": "随机化",
"__typename": "TopicTagNode"
}
],
"companyTagStats": null,
"codeSnippets": [
{
"lang": "C++",
"langSlug": "cpp",
"code": "class RandomizedSet {\npublic:\n /** Initialize your data structure here. */\n RandomizedSet() {\n\n }\n \n /** Inserts a value to the set. Returns true if the set did not already contain the specified element. */\n bool insert(int val) {\n\n }\n \n /** Removes a value from the set. Returns true if the set contained the specified element. */\n bool remove(int val) {\n\n }\n \n /** Get a random element from the set. */\n int getRandom() {\n\n }\n};\n\n/**\n * Your RandomizedSet object will be instantiated and called as such:\n * RandomizedSet* obj = new RandomizedSet();\n * bool param_1 = obj->insert(val);\n * bool param_2 = obj->remove(val);\n * int param_3 = obj->getRandom();\n */",
"__typename": "CodeSnippetNode"
},
{
"lang": "Java",
"langSlug": "java",
"code": "class RandomizedSet {\n\n /** Initialize your data structure here. */\n public RandomizedSet() {\n\n }\n \n /** Inserts a value to the set. Returns true if the set did not already contain the specified element. */\n public boolean insert(int val) {\n\n }\n \n /** Removes a value from the set. Returns true if the set contained the specified element. */\n public boolean remove(int val) {\n\n }\n \n /** Get a random element from the set. */\n public int getRandom() {\n\n }\n}\n\n/**\n * Your RandomizedSet object will be instantiated and called as such:\n * RandomizedSet obj = new RandomizedSet();\n * boolean param_1 = obj.insert(val);\n * boolean param_2 = obj.remove(val);\n * int param_3 = obj.getRandom();\n */",
"__typename": "CodeSnippetNode"
},
{
"lang": "Python",
"langSlug": "python",
"code": "class RandomizedSet(object):\n\n def __init__(self):\n \"\"\"\n Initialize your data structure here.\n \"\"\"\n\n\n def insert(self, val):\n \"\"\"\n Inserts a value to the set. Returns true if the set did not already contain the specified element.\n :type val: int\n :rtype: bool\n \"\"\"\n\n\n def remove(self, val):\n \"\"\"\n Removes a value from the set. Returns true if the set contained the specified element.\n :type val: int\n :rtype: bool\n \"\"\"\n\n\n def getRandom(self):\n \"\"\"\n Get a random element from the set.\n :rtype: int\n \"\"\"\n\n\n\n# Your RandomizedSet object will be instantiated and called as such:\n# obj = RandomizedSet()\n# param_1 = obj.insert(val)\n# param_2 = obj.remove(val)\n# param_3 = obj.getRandom()",
"__typename": "CodeSnippetNode"
},
{
"lang": "Python3",
"langSlug": "python3",
"code": "class RandomizedSet:\n\n def __init__(self):\n \"\"\"\n Initialize your data structure here.\n \"\"\"\n\n\n def insert(self, val: int) -> bool:\n \"\"\"\n Inserts a value to the set. Returns true if the set did not already contain the specified element.\n \"\"\"\n\n\n def remove(self, val: int) -> bool:\n \"\"\"\n Removes a value from the set. Returns true if the set contained the specified element.\n \"\"\"\n\n\n def getRandom(self) -> int:\n \"\"\"\n Get a random element from the set.\n \"\"\"\n\n\n\n# Your RandomizedSet object will be instantiated and called as such:\n# obj = RandomizedSet()\n# param_1 = obj.insert(val)\n# param_2 = obj.remove(val)\n# param_3 = obj.getRandom()",
"__typename": "CodeSnippetNode"
},
{
"lang": "C",
"langSlug": "c",
"code": "\n\n\ntypedef struct {\n\n} RandomizedSet;\n\n/** Initialize your data structure here. */\n\nRandomizedSet* randomizedSetCreate() {\n\n}\n\n/** Inserts a value to the set. Returns true if the set did not already contain the specified element. */\nbool randomizedSetInsert(RandomizedSet* obj, int val) {\n\n}\n\n/** Removes a value from the set. Returns true if the set contained the specified element. */\nbool randomizedSetRemove(RandomizedSet* obj, int val) {\n\n}\n\n/** Get a random element from the set. */\nint randomizedSetGetRandom(RandomizedSet* obj) {\n\n}\n\nvoid randomizedSetFree(RandomizedSet* obj) {\n\n}\n\n/**\n * Your RandomizedSet struct will be instantiated and called as such:\n * RandomizedSet* obj = randomizedSetCreate();\n * bool param_1 = randomizedSetInsert(obj, val);\n \n * bool param_2 = randomizedSetRemove(obj, val);\n \n * int param_3 = randomizedSetGetRandom(obj);\n \n * randomizedSetFree(obj);\n*/",
"__typename": "CodeSnippetNode"
},
{
"lang": "C#",
"langSlug": "csharp",
"code": "public class RandomizedSet {\n\n /** Initialize your data structure here. */\n public RandomizedSet() {\n\n }\n \n /** Inserts a value to the set. Returns true if the set did not already contain the specified element. */\n public bool Insert(int val) {\n\n }\n \n /** Removes a value from the set. Returns true if the set contained the specified element. */\n public bool Remove(int val) {\n\n }\n \n /** Get a random element from the set. */\n public int GetRandom() {\n\n }\n}\n\n/**\n * Your RandomizedSet object will be instantiated and called as such:\n * RandomizedSet obj = new RandomizedSet();\n * bool param_1 = obj.Insert(val);\n * bool param_2 = obj.Remove(val);\n * int param_3 = obj.GetRandom();\n */",
"__typename": "CodeSnippetNode"
},
{
"lang": "JavaScript",
"langSlug": "javascript",
"code": "/**\n * Initialize your data structure here.\n */\nvar RandomizedSet = function() {\n\n};\n\n/**\n * Inserts a value to the set. Returns true if the set did not already contain the specified element. \n * @param {number} val\n * @return {boolean}\n */\nRandomizedSet.prototype.insert = function(val) {\n\n};\n\n/**\n * Removes a value from the set. Returns true if the set contained the specified element. \n * @param {number} val\n * @return {boolean}\n */\nRandomizedSet.prototype.remove = function(val) {\n\n};\n\n/**\n * Get a random element from the set.\n * @return {number}\n */\nRandomizedSet.prototype.getRandom = function() {\n\n};\n\n/**\n * Your RandomizedSet object will be instantiated and called as such:\n * var obj = new RandomizedSet()\n * var param_1 = obj.insert(val)\n * var param_2 = obj.remove(val)\n * var param_3 = obj.getRandom()\n */",
"__typename": "CodeSnippetNode"
},
{
"lang": "TypeScript",
"langSlug": "typescript",
"code": "class RandomizedSet {\n constructor() {\n\n }\n\n insert(val: number): boolean {\n\n }\n\n remove(val: number): boolean {\n\n }\n\n getRandom(): number {\n\n }\n}\n\n/**\n * Your RandomizedSet object will be instantiated and called as such:\n * var obj = new RandomizedSet()\n * var param_1 = obj.insert(val)\n * var param_2 = obj.remove(val)\n * var param_3 = obj.getRandom()\n */",
"__typename": "CodeSnippetNode"
},
{
"lang": "PHP",
"langSlug": "php",
"code": "class RandomizedSet {\n /**\n * Initialize your data structure here.\n */\n function __construct() {\n\n }\n\n /**\n * Inserts a value to the set. Returns true if the set did not already contain the specified element.\n * @param Integer $val\n * @return Boolean\n */\n function insert($val) {\n\n }\n\n /**\n * Removes a value from the set. Returns true if the set contained the specified element.\n * @param Integer $val\n * @return Boolean\n */\n function remove($val) {\n\n }\n\n /**\n * Get a random element from the set.\n * @return Integer\n */\n function getRandom() {\n\n }\n}\n\n/**\n * Your RandomizedSet object will be instantiated and called as such:\n * $obj = RandomizedSet();\n * $ret_1 = $obj->insert($val);\n * $ret_2 = $obj->remove($val);\n * $ret_3 = $obj->getRandom();\n */",
"__typename": "CodeSnippetNode"
},
{
"lang": "Swift",
"langSlug": "swift",
"code": "\nclass RandomizedSet {\n\n /** Initialize your data structure here. */\n init() {\n\n }\n \n /** Inserts a value to the set. Returns true if the set did not already contain the specified element. */\n func insert(_ val: Int) -> Bool {\n\n }\n \n /** Removes a value from the set. Returns true if the set contained the specified element. */\n func remove(_ val: Int) -> Bool {\n\n }\n \n /** Get a random element from the set. */\n func getRandom() -> Int {\n\n }\n}\n\n/**\n * Your RandomizedSet object will be instantiated and called as such:\n * let obj = RandomizedSet()\n * let ret_1: Bool = obj.insert(val)\n * let ret_2: Bool = obj.remove(val)\n * let ret_3: Int = obj.getRandom()\n */",
"__typename": "CodeSnippetNode"
},
{
"lang": "Kotlin",
"langSlug": "kotlin",
"code": "class RandomizedSet() {\n\n /** Initialize your data structure here. */\n\n\n /** Inserts a value to the set. Returns true if the set did not already contain the specified element. */\n fun insert(`val`: Int): Boolean {\n\n }\n\n /** Removes a value from the set. Returns true if the set contained the specified element. */\n fun remove(`val`: Int): Boolean {\n\n }\n\n /** Get a random element from the set. */\n fun getRandom(): Int {\n\n }\n\n}\n\n/**\n * Your RandomizedSet object will be instantiated and called as such:\n * var obj = RandomizedSet()\n * var param_1 = obj.insert(`val`)\n * var param_2 = obj.remove(`val`)\n * var param_3 = obj.getRandom()\n */",
"__typename": "CodeSnippetNode"
},
{
"lang": "Go",
"langSlug": "golang",
"code": "type RandomizedSet struct {\n\n}\n\n\n/** Initialize your data structure here. */\nfunc Constructor() RandomizedSet {\n\n}\n\n\n/** Inserts a value to the set. Returns true if the set did not already contain the specified element. */\nfunc (this *RandomizedSet) Insert(val int) bool {\n\n}\n\n\n/** Removes a value from the set. Returns true if the set contained the specified element. */\nfunc (this *RandomizedSet) Remove(val int) bool {\n\n}\n\n\n/** Get a random element from the set. */\nfunc (this *RandomizedSet) GetRandom() int {\n\n}\n\n\n/**\n * Your RandomizedSet object will be instantiated and called as such:\n * obj := Constructor();\n * param_1 := obj.Insert(val);\n * param_2 := obj.Remove(val);\n * param_3 := obj.GetRandom();\n */",
"__typename": "CodeSnippetNode"
},
{
"lang": "Ruby",
"langSlug": "ruby",
"code": "class RandomizedSet\n\n=begin\n Initialize your data structure here.\n=end\n def initialize()\n\n end\n\n\n=begin\n Inserts a value to the set. Returns true if the set did not already contain the specified element.\n :type val: Integer\n :rtype: Boolean\n=end\n def insert(val)\n\n end\n\n\n=begin\n Removes a value from the set. Returns true if the set contained the specified element.\n :type val: Integer\n :rtype: Boolean\n=end\n def remove(val)\n\n end\n\n\n=begin\n Get a random element from the set.\n :rtype: Integer\n=end\n def get_random()\n\n end\n\n\nend\n\n# Your RandomizedSet object will be instantiated and called as such:\n# obj = RandomizedSet.new()\n# param_1 = obj.insert(val)\n# param_2 = obj.remove(val)\n# param_3 = obj.get_random()",
"__typename": "CodeSnippetNode"
},
{
"lang": "Scala",
"langSlug": "scala",
"code": "class RandomizedSet() {\n\n /** Initialize your data structure here. */\n\n\n /** Inserts a value to the set. Returns true if the set did not already contain the specified element. */\n def insert(`val`: Int): Boolean = {\n\n }\n\n /** Removes a value from the set. Returns true if the set contained the specified element. */\n def remove(`val`: Int): Boolean = {\n\n }\n\n /** Get a random element from the set. */\n def getRandom(): Int = {\n\n }\n\n}\n\n/**\n * Your RandomizedSet object will be instantiated and called as such:\n * var obj = new RandomizedSet()\n * var param_1 = obj.insert(`val`)\n * var param_2 = obj.remove(`val`)\n * var param_3 = obj.getRandom()\n */",
"__typename": "CodeSnippetNode"
},
{
"lang": "Rust",
"langSlug": "rust",
"code": "struct RandomizedSet {\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 RandomizedSet {\n\n /** Initialize your data structure here. */\n fn new() -> Self {\n\n }\n \n /** Inserts a value to the set. Returns true if the set did not already contain the specified element. */\n fn insert(&self, val: i32) -> bool {\n\n }\n \n /** Removes a value from the set. Returns true if the set contained the specified element. */\n fn remove(&self, val: i32) -> bool {\n\n }\n \n /** Get a random element from the set. */\n fn get_random(&self) -> i32 {\n\n }\n}\n\n/**\n * Your RandomizedSet object will be instantiated and called as such:\n * let obj = RandomizedSet::new();\n * let ret_1: bool = obj.insert(val);\n * let ret_2: bool = obj.remove(val);\n * let ret_3: i32 = obj.get_random();\n */",
"__typename": "CodeSnippetNode"
},
{
"lang": "Racket",
"langSlug": "racket",
"code": "(define randomized-set%\n (class object%\n (super-new)\n (init-field)\n \n ; insert : exact-integer? -> boolean?\n (define/public (insert val)\n\n )\n ; remove : exact-integer? -> boolean?\n (define/public (remove val)\n\n )\n ; get-random : -> exact-integer?\n (define/public (get-random)\n\n )))\n\n;; Your randomized-set% object will be instantiated and called as such:\n;; (define obj (new randomized-set%))\n;; (define param_1 (send obj insert val))\n;; (define param_2 (send obj remove val))\n;; (define param_3 (send obj get-random))",
"__typename": "CodeSnippetNode"
},
{
"lang": "Erlang",
"langSlug": "erlang",
"code": "-spec randomized_set_init_() -> any().\nrandomized_set_init_() ->\n .\n\n-spec randomized_set_insert(Val :: integer()) -> boolean().\nrandomized_set_insert(Val) ->\n .\n\n-spec randomized_set_remove(Val :: integer()) -> boolean().\nrandomized_set_remove(Val) ->\n .\n\n-spec randomized_set_get_random() -> integer().\nrandomized_set_get_random() ->\n .\n\n\n%% Your functions will be called as such:\n%% randomized_set_init_(),\n%% Param_1 = randomized_set_insert(Val),\n%% Param_2 = randomized_set_remove(Val),\n%% Param_3 = randomized_set_get_random(),\n\n%% randomized_set_init_ will be called before every test case, in which you can do some necessary initializations.",
"__typename": "CodeSnippetNode"
},
{
"lang": "Elixir",
"langSlug": "elixir",
"code": "defmodule RandomizedSet do\n @spec init_() :: any\n def init_() do\n\n end\n\n @spec insert(val :: integer) :: boolean\n def insert(val) do\n\n end\n\n @spec remove(val :: integer) :: boolean\n def remove(val) do\n\n end\n\n @spec get_random() :: integer\n def get_random() do\n\n end\nend\n\n# Your functions will be called as such:\n# RandomizedSet.init_()\n# param_1 = RandomizedSet.insert(val)\n# param_2 = RandomizedSet.remove(val)\n# param_3 = RandomizedSet.get_random()\n\n# RandomizedSet.init_ will be called before every test case, in which you can do some necessary initializations.",
"__typename": "CodeSnippetNode"
}
],
"stats": "{\"totalAccepted\": \"27.1K\", \"totalSubmission\": \"50.3K\", \"totalAcceptedRaw\": 27133, \"totalSubmissionRaw\": 50346, \"acRate\": \"53.9%\"}",
"hints": [],
"solution": null,
"status": null,
"sampleTestCase": "[\"RandomizedSet\",\"insert\",\"remove\",\"insert\",\"getRandom\",\"remove\",\"insert\",\"getRandom\"]\n[[],[1],[2],[2],[],[1],[2],[]]",
"metaData": "{\"classname\": \"RandomizedSet\", \"maxbytesperline\": 200000, \"systemdesign\": true, \"constructor\": {\"params\": []}, \"methods\": [{\"name\": \"insert\", \"params\": [{\"name\": \"val\", \"type\": \"integer\"}], \"return\": {\"type\": \"boolean\"}}, {\"name\": \"remove\", \"params\": [{\"name\": \"val\", \"type\": \"integer\"}], \"return\": {\"type\": \"boolean\"}}, {\"name\": \"getRandom\", \"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\\/[email protected]<\\/a> \\u548c <a href=\\\"https:\\/\\/github.com\\/datastructures-js\\/queue\\/tree\\/e63563025a5a805aa16928cb53bcd517bfea9230\\\" target=\\\"_blank\\\"> datastructures-js\\/[email protected]<\\/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\\/[email protected]<\\/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\\/[email protected]<\\/a> \\u548c <a href=\\\"https:\\/\\/github.com\\/datastructures-js\\/queue\\/tree\\/e63563025a5a805aa16928cb53bcd517bfea9230\\\" target=\\\"_blank\\\"> datastructures-js\\/[email protected]<\\/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\"]}",
"book": null,
"isSubscribed": false,
"isDailyQuestion": false,
"dailyRecordStatus": null,
"editorType": "CKEDITOR",
"ugcQuestionId": null,
"style": "LEETCODE",
"exampleTestcases": "",
"__typename": "QuestionNode"
}
}
}