mirror of
https://gitee.com/coder-xiaomo/leetcode-problemset
synced 2025-01-11 02:58:13 +08:00
189 lines
28 KiB
JSON
189 lines
28 KiB
JSON
{
|
||
"data": {
|
||
"question": {
|
||
"questionId": "100173",
|
||
"questionFrontendId": "面试题 03.05",
|
||
"categoryTitle": "LCCI",
|
||
"boundTopicId": 46185,
|
||
"title": "Sort of Stacks LCCI",
|
||
"titleSlug": "sort-of-stacks-lcci",
|
||
"content": "<p>Write a program to sort a stack such that the smallest items are on the top. You can use an additional temporary stack, but you may not copy the elements into any other data structure (such as an array). The stack supports the following operations: <code>push</code>, <code>pop</code>, <code>peek</code>, and <code>isEmpty</code>. When the stack is empty, <code>peek</code> should return -1.</p>\r\n\r\n<p><strong>Example1:</strong></p>\r\n\r\n<pre>\r\n<strong> Input</strong>: \r\n["SortedStack", "push", "push", "peek", "pop", "peek"]\r\n[[], [1], [2], [], [], []]\r\n<strong> Output</strong>: \r\n[null,null,null,1,null,2]\r\n</pre>\r\n\r\n<p><strong>Example2:</strong></p>\r\n\r\n<pre>\r\n<strong> Input</strong>: \r\n["SortedStack", "pop", "pop", "push", "pop", "isEmpty"]\r\n[[], [], [], [1], [], []]\r\n<strong> Output</strong>: \r\n[null,null,null,null,null,true]\r\n</pre>\r\n\r\n<p><strong>Note:</strong></p>\r\n\r\n<ol>\r\n\t<li>The total number of elements in the stack is within the range [0, 5000].</li>\r\n</ol>\r\n",
|
||
"translatedTitle": "栈排序",
|
||
"translatedContent": "<p>栈排序。 编写程序,对栈进行排序使最小元素位于栈顶。最多只能使用一个其他的临时栈存放数据,但不得将元素复制到别的数据结构(如数组)中。该栈支持如下操作:<code>push</code>、<code>pop</code>、<code>peek</code> 和 <code>isEmpty</code>。当栈为空时,<code>peek</code> 返回 -1。</p>\n\n<p><strong>示例1:</strong></p>\n\n<pre><strong> 输入</strong>:\n["SortedStack", "push", "push", "peek", "pop", "peek"]\n[[], [1], [2], [], [], []]\n<strong> 输出</strong>:\n[null,null,null,1,null,2]\n</pre>\n\n<p><strong>示例2:</strong></p>\n\n<pre><strong> 输入</strong>: \n["SortedStack", "pop", "pop", "push", "pop", "isEmpty"]\n[[], [], [], [1], [], []]\n<strong> 输出</strong>:\n[null,null,null,null,null,true]\n</pre>\n\n<p><strong>说明:</strong></p>\n\n<ol>\n\t<li>栈中的元素数目在[0, 5000]范围内。</li>\n</ol>\n",
|
||
"isPaidOnly": false,
|
||
"difficulty": "Medium",
|
||
"likes": 67,
|
||
"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": "Stack",
|
||
"slug": "stack",
|
||
"translatedName": "栈",
|
||
"__typename": "TopicTagNode"
|
||
},
|
||
{
|
||
"name": "Design",
|
||
"slug": "design",
|
||
"translatedName": "设计",
|
||
"__typename": "TopicTagNode"
|
||
},
|
||
{
|
||
"name": "Monotonic Stack",
|
||
"slug": "monotonic-stack",
|
||
"translatedName": "单调栈",
|
||
"__typename": "TopicTagNode"
|
||
}
|
||
],
|
||
"companyTagStats": null,
|
||
"codeSnippets": [
|
||
{
|
||
"lang": "C++",
|
||
"langSlug": "cpp",
|
||
"code": "class SortedStack {\npublic:\n SortedStack() {\n\n }\n \n void push(int val) {\n\n }\n \n void pop() {\n\n }\n \n int peek() {\n\n }\n \n bool isEmpty() {\n\n }\n};\n\n/**\n * Your SortedStack object will be instantiated and called as such:\n * SortedStack* obj = new SortedStack();\n * obj->push(val);\n * obj->pop();\n * int param_3 = obj->peek();\n * bool param_4 = obj->isEmpty();\n */",
|
||
"__typename": "CodeSnippetNode"
|
||
},
|
||
{
|
||
"lang": "Java",
|
||
"langSlug": "java",
|
||
"code": "class SortedStack {\n\n public SortedStack() {\n\n }\n \n public void push(int val) {\n\n }\n \n public void pop() {\n\n }\n \n public int peek() {\n\n }\n \n public boolean isEmpty() {\n\n }\n}\n\n/**\n * Your SortedStack object will be instantiated and called as such:\n * SortedStack obj = new SortedStack();\n * obj.push(val);\n * obj.pop();\n * int param_3 = obj.peek();\n * boolean param_4 = obj.isEmpty();\n */",
|
||
"__typename": "CodeSnippetNode"
|
||
},
|
||
{
|
||
"lang": "Python",
|
||
"langSlug": "python",
|
||
"code": "class SortedStack(object):\n\n def __init__(self):\n\n\n def push(self, val):\n \"\"\"\n :type val: int\n :rtype: None\n \"\"\"\n\n\n def pop(self):\n \"\"\"\n :rtype: None\n \"\"\"\n\n\n def peek(self):\n \"\"\"\n :rtype: int\n \"\"\"\n\n\n def isEmpty(self):\n \"\"\"\n :rtype: bool\n \"\"\"\n\n\n\n# Your SortedStack object will be instantiated and called as such:\n# obj = SortedStack()\n# obj.push(val)\n# obj.pop()\n# param_3 = obj.peek()\n# param_4 = obj.isEmpty()",
|
||
"__typename": "CodeSnippetNode"
|
||
},
|
||
{
|
||
"lang": "Python3",
|
||
"langSlug": "python3",
|
||
"code": "class SortedStack:\n\n def __init__(self):\n\n\n def push(self, val: int) -> None:\n\n\n def pop(self) -> None:\n\n\n def peek(self) -> int:\n\n\n def isEmpty(self) -> bool:\n\n\n\n# Your SortedStack object will be instantiated and called as such:\n# obj = SortedStack()\n# obj.push(val)\n# obj.pop()\n# param_3 = obj.peek()\n# param_4 = obj.isEmpty()",
|
||
"__typename": "CodeSnippetNode"
|
||
},
|
||
{
|
||
"lang": "C",
|
||
"langSlug": "c",
|
||
"code": "\n\n\ntypedef struct {\n\n} SortedStack;\n\n\nSortedStack* sortedStackCreate() {\n\n}\n\nvoid sortedStackPush(SortedStack* obj, int val) {\n\n}\n\nvoid sortedStackPop(SortedStack* obj) {\n\n}\n\nint sortedStackPeek(SortedStack* obj) {\n\n}\n\nbool sortedStackIsEmpty(SortedStack* obj) {\n\n}\n\nvoid sortedStackFree(SortedStack* obj) {\n\n}\n\n/**\n * Your SortedStack struct will be instantiated and called as such:\n * SortedStack* obj = sortedStackCreate();\n * sortedStackPush(obj, val);\n \n * sortedStackPop(obj);\n \n * int param_3 = sortedStackPeek(obj);\n \n * bool param_4 = sortedStackIsEmpty(obj);\n \n * sortedStackFree(obj);\n*/",
|
||
"__typename": "CodeSnippetNode"
|
||
},
|
||
{
|
||
"lang": "C#",
|
||
"langSlug": "csharp",
|
||
"code": "public class SortedStack {\n\n public SortedStack() {\n\n }\n \n public void Push(int val) {\n\n }\n \n public void Pop() {\n\n }\n \n public int Peek() {\n\n }\n \n public bool IsEmpty() {\n\n }\n}\n\n/**\n * Your SortedStack object will be instantiated and called as such:\n * SortedStack obj = new SortedStack();\n * obj.Push(val);\n * obj.Pop();\n * int param_3 = obj.Peek();\n * bool param_4 = obj.IsEmpty();\n */",
|
||
"__typename": "CodeSnippetNode"
|
||
},
|
||
{
|
||
"lang": "JavaScript",
|
||
"langSlug": "javascript",
|
||
"code": "\nvar SortedStack = function() {\n\n};\n\n/** \n * @param {number} val\n * @return {void}\n */\nSortedStack.prototype.push = function(val) {\n\n};\n\n/**\n * @return {void}\n */\nSortedStack.prototype.pop = function() {\n\n};\n\n/**\n * @return {number}\n */\nSortedStack.prototype.peek = function() {\n\n};\n\n/**\n * @return {boolean}\n */\nSortedStack.prototype.isEmpty = function() {\n\n};\n\n/**\n * Your SortedStack object will be instantiated and called as such:\n * var obj = new SortedStack()\n * obj.push(val)\n * obj.pop()\n * var param_3 = obj.peek()\n * var param_4 = obj.isEmpty()\n */",
|
||
"__typename": "CodeSnippetNode"
|
||
},
|
||
{
|
||
"lang": "Ruby",
|
||
"langSlug": "ruby",
|
||
"code": "class SortedStack\n def initialize()\n\n end\n\n\n=begin\n :type val: Integer\n :rtype: Void\n=end\n def push(val)\n\n end\n\n\n=begin\n :rtype: Void\n=end\n def pop()\n\n end\n\n\n=begin\n :rtype: Integer\n=end\n def peek()\n\n end\n\n\n=begin\n :rtype: Boolean\n=end\n def is_empty()\n\n end\n\n\nend\n\n# Your SortedStack object will be instantiated and called as such:\n# obj = SortedStack.new()\n# obj.push(val)\n# obj.pop()\n# param_3 = obj.peek()\n# param_4 = obj.is_empty()",
|
||
"__typename": "CodeSnippetNode"
|
||
},
|
||
{
|
||
"lang": "Swift",
|
||
"langSlug": "swift",
|
||
"code": "\nclass SortedStack {\n\n init() {\n\n }\n \n func push(_ val: Int) {\n\n }\n \n func pop() {\n\n }\n \n func peek() -> Int {\n\n }\n \n func isEmpty() -> Bool {\n\n }\n}\n\n/**\n * Your SortedStack object will be instantiated and called as such:\n * let obj = SortedStack()\n * obj.push(val)\n * obj.pop()\n * let ret_3: Int = obj.peek()\n * let ret_4: Bool = obj.isEmpty()\n */",
|
||
"__typename": "CodeSnippetNode"
|
||
},
|
||
{
|
||
"lang": "Go",
|
||
"langSlug": "golang",
|
||
"code": "type SortedStack struct {\n\n}\n\n\nfunc Constructor() SortedStack {\n\n}\n\n\nfunc (this *SortedStack) Push(val int) {\n\n}\n\n\nfunc (this *SortedStack) Pop() {\n\n}\n\n\nfunc (this *SortedStack) Peek() int {\n\n}\n\n\nfunc (this *SortedStack) IsEmpty() bool {\n\n}\n\n\n/**\n * Your SortedStack object will be instantiated and called as such:\n * obj := Constructor();\n * obj.Push(val);\n * obj.Pop();\n * param_3 := obj.Peek();\n * param_4 := obj.IsEmpty();\n */",
|
||
"__typename": "CodeSnippetNode"
|
||
},
|
||
{
|
||
"lang": "Scala",
|
||
"langSlug": "scala",
|
||
"code": "class SortedStack() {\n\n def push(`val`: Int) {\n\n }\n\n def pop() {\n\n }\n\n def peek(): Int = {\n\n }\n\n def isEmpty(): Boolean = {\n\n }\n\n}\n\n/**\n * Your SortedStack object will be instantiated and called as such:\n * var obj = new SortedStack()\n * obj.push(`val`)\n * obj.pop()\n * var param_3 = obj.peek()\n * var param_4 = obj.isEmpty()\n */",
|
||
"__typename": "CodeSnippetNode"
|
||
},
|
||
{
|
||
"lang": "Kotlin",
|
||
"langSlug": "kotlin",
|
||
"code": "class SortedStack() {\n\n fun push(`val`: Int) {\n\n }\n\n fun pop() {\n\n }\n\n fun peek(): Int {\n\n }\n\n fun isEmpty(): Boolean {\n\n }\n\n}\n\n/**\n * Your SortedStack object will be instantiated and called as such:\n * var obj = SortedStack()\n * obj.push(`val`)\n * obj.pop()\n * var param_3 = obj.peek()\n * var param_4 = obj.isEmpty()\n */",
|
||
"__typename": "CodeSnippetNode"
|
||
},
|
||
{
|
||
"lang": "Rust",
|
||
"langSlug": "rust",
|
||
"code": "struct SortedStack {\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 SortedStack {\n\n fn new() -> Self {\n\n }\n \n fn push(&self, val: i32) {\n\n }\n \n fn pop(&self) {\n\n }\n \n fn peek(&self) -> i32 {\n\n }\n \n fn is_empty(&self) -> bool {\n\n }\n}\n\n/**\n * Your SortedStack object will be instantiated and called as such:\n * let obj = SortedStack::new();\n * obj.push(val);\n * obj.pop();\n * let ret_3: i32 = obj.peek();\n * let ret_4: bool = obj.is_empty();\n */",
|
||
"__typename": "CodeSnippetNode"
|
||
},
|
||
{
|
||
"lang": "PHP",
|
||
"langSlug": "php",
|
||
"code": "class SortedStack {\n /**\n */\n function __construct() {\n\n }\n\n /**\n * @param Integer $val\n * @return NULL\n */\n function push($val) {\n\n }\n\n /**\n * @return NULL\n */\n function pop() {\n\n }\n\n /**\n * @return Integer\n */\n function peek() {\n\n }\n\n /**\n * @return Boolean\n */\n function isEmpty() {\n\n }\n}\n\n/**\n * Your SortedStack object will be instantiated and called as such:\n * $obj = SortedStack();\n * $obj->push($val);\n * $obj->pop();\n * $ret_3 = $obj->peek();\n * $ret_4 = $obj->isEmpty();\n */",
|
||
"__typename": "CodeSnippetNode"
|
||
},
|
||
{
|
||
"lang": "TypeScript",
|
||
"langSlug": "typescript",
|
||
"code": "class SortedStack {\n constructor() {\n\n }\n\n push(val: number): void {\n\n }\n\n pop(): void {\n\n }\n\n peek(): number {\n\n }\n\n isEmpty(): boolean {\n\n }\n}\n\n/**\n * Your SortedStack object will be instantiated and called as such:\n * var obj = new SortedStack()\n * obj.push(val)\n * obj.pop()\n * var param_3 = obj.peek()\n * var param_4 = obj.isEmpty()\n */",
|
||
"__typename": "CodeSnippetNode"
|
||
},
|
||
{
|
||
"lang": "Racket",
|
||
"langSlug": "racket",
|
||
"code": "(define sorted-stack%\n (class object%\n (super-new)\n (init-field)\n \n ; push : exact-integer? -> void?\n (define/public (push val)\n\n )\n ; pop : -> void?\n (define/public (pop)\n\n )\n ; peek : -> exact-integer?\n (define/public (peek)\n\n )\n ; is-empty : -> boolean?\n (define/public (is-empty)\n\n )))\n\n;; Your sorted-stack% object will be instantiated and called as such:\n;; (define obj (new sorted-stack%))\n;; (send obj push val)\n;; (send obj pop)\n;; (define param_3 (send obj peek))\n;; (define param_4 (send obj is-empty))",
|
||
"__typename": "CodeSnippetNode"
|
||
},
|
||
{
|
||
"lang": "Erlang",
|
||
"langSlug": "erlang",
|
||
"code": "-spec sorted_stack_init_() -> any().\nsorted_stack_init_() ->\n .\n\n-spec sorted_stack_push(Val :: integer()) -> any().\nsorted_stack_push(Val) ->\n .\n\n-spec sorted_stack_pop() -> any().\nsorted_stack_pop() ->\n .\n\n-spec sorted_stack_peek() -> integer().\nsorted_stack_peek() ->\n .\n\n-spec sorted_stack_is_empty() -> boolean().\nsorted_stack_is_empty() ->\n .\n\n\n%% Your functions will be called as such:\n%% sorted_stack_init_(),\n%% sorted_stack_push(Val),\n%% sorted_stack_pop(),\n%% Param_3 = sorted_stack_peek(),\n%% Param_4 = sorted_stack_is_empty(),\n\n%% sorted_stack_init_ will be called before every test case, in which you can do some necessary initializations.",
|
||
"__typename": "CodeSnippetNode"
|
||
},
|
||
{
|
||
"lang": "Elixir",
|
||
"langSlug": "elixir",
|
||
"code": "defmodule SortedStack do\n @spec init_() :: any\n def init_() do\n\n end\n\n @spec push(val :: integer) :: any\n def push(val) do\n\n end\n\n @spec pop() :: any\n def pop() do\n\n end\n\n @spec peek() :: integer\n def peek() do\n\n end\n\n @spec is_empty() :: boolean\n def is_empty() do\n\n end\nend\n\n# Your functions will be called as such:\n# SortedStack.init_()\n# SortedStack.push(val)\n# SortedStack.pop()\n# param_3 = SortedStack.peek()\n# param_4 = SortedStack.is_empty()\n\n# SortedStack.init_ will be called before every test case, in which you can do some necessary initializations.",
|
||
"__typename": "CodeSnippetNode"
|
||
}
|
||
],
|
||
"stats": "{\"totalAccepted\": \"19.8K\", \"totalSubmission\": \"36.7K\", \"totalAcceptedRaw\": 19766, \"totalSubmissionRaw\": 36684, \"acRate\": \"53.9%\"}",
|
||
"hints": [
|
||
"排序数组的一种方法是遍历数组,并将每个元素按排序顺序插入到一个新数组中。你可以用一个栈实现吗?",
|
||
"假设二级栈已排序。你能按顺序插入元素吗?你可能需要一些额外的存储空间。你可以使用什么额外的存储?",
|
||
"保持二级栈的排序顺序,最大的元素在顶部。使用主栈进行额外的存储。"
|
||
],
|
||
"solution": null,
|
||
"status": null,
|
||
"sampleTestCase": "[\"SortedStack\", \"push\", \"push\", \"peek\", \"pop\", \"peek\"]\n[[], [1], [2], [], [], []]",
|
||
"metaData": "{\"classname\": \"SortedStack\", \"maxbytesperline\": 200000, \"systemdesign\": true, \"constructor\": {\"params\": []}, \"methods\": [{\"name\": \"push\", \"params\": [{\"name\": \"val\", \"type\": \"integer\"}], \"return\": {\"type\": \"void\"}}, {\"name\": \"pop\", \"params\": [], \"return\": {\"type\": \"void\"}}, {\"name\": \"peek\", \"params\": [], \"return\": {\"type\": \"integer\"}}, {\"name\": \"isEmpty\", \"params\": [], \"return\": {\"type\": \"boolean\"}}], \"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++ 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": {
|
||
"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"
|
||
}
|
||
}
|
||
} |