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

196 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": "100172",
"questionFrontendId": "面试题 03.01",
"categoryTitle": "LCCI",
"boundTopicId": 46167,
"title": "Three in One LCCI",
"titleSlug": "three-in-one-lcci",
"content": "<p>Describe how you could use a single array to implement three stacks.</p>\r\n\r\n<p>You&nbsp;should implement&nbsp;<code>push(stackNum, value)</code>、<code>pop(stackNum)</code>、<code>isEmpty(stackNum)</code>、<code>peek(stackNum)</code>&nbsp;methods.&nbsp;<code>stackNum<font face=\"sans-serif, Arial, Verdana, Trebuchet MS\">&nbsp;</font></code><font face=\"sans-serif, Arial, Verdana, Trebuchet MS\">is the index of the stack.&nbsp;</font><code>value</code>&nbsp;is the value that pushed to the stack.</p>\r\n\r\n<p>The constructor requires a&nbsp;<code>stackSize</code>&nbsp;parameter, which represents the size of each stack.</p>\r\n\r\n<p><strong>Example1:</strong></p>\r\n\r\n<pre>\r\n<strong> Input</strong>: \r\n[&quot;TripleInOne&quot;, &quot;push&quot;, &quot;push&quot;, &quot;pop&quot;, &quot;pop&quot;, &quot;pop&quot;, &quot;isEmpty&quot;]\r\n[[1], [0, 1], [0, 2], [0], [0], [0], [0]]\r\n<strong> Output</strong>: \r\n[null, null, null, 1, -1, -1, true]\r\n<b>Explanation</b>: When the stack is empty, `pop, peek` return -1. When the stack is full, `push` does nothing.\r\n</pre>\r\n\r\n<p><strong>Example2:</strong></p>\r\n\r\n<pre>\r\n<strong> Input</strong>: \r\n[&quot;TripleInOne&quot;, &quot;push&quot;, &quot;push&quot;, &quot;push&quot;, &quot;pop&quot;, &quot;pop&quot;, &quot;pop&quot;, &quot;peek&quot;]\r\n[[2], [0, 1], [0, 2], [0, 3], [0], [0], [0], [0]]\r\n<strong> Output</strong>: \r\n[null, null, null, null, 2, 1, -1, -1]\r\n</pre>\r\n",
"translatedTitle": "三合一",
"translatedContent": "<p>三合一。描述如何只用一个数组来实现三个栈。</p>\n\n<p>你应该实现<code>push(stackNum, value)</code>、<code>pop(stackNum)</code>、<code>isEmpty(stackNum)</code>、<code>peek(stackNum)</code>方法。<code>stackNum</code>表示栈下标,<code>value</code>表示压入的值。</p>\n\n<p>构造函数会传入一个<code>stackSize</code>参数,代表每个栈的大小。</p>\n\n<p><strong>示例1:</strong></p>\n\n<pre>\n<strong> 输入</strong>\n[\"TripleInOne\", \"push\", \"push\", \"pop\", \"pop\", \"pop\", \"isEmpty\"]\n[[1], [0, 1], [0, 2], [0], [0], [0], [0]]\n<strong> 输出</strong>\n[null, null, null, 1, -1, -1, true]\n<strong>说明</strong>:当栈为空时`pop, peek`返回-1当栈满时`push`不压入元素。\n</pre>\n\n<p><strong>示例2:</strong></p>\n\n<pre>\n<strong> 输入</strong>\n[\"TripleInOne\", \"push\", \"push\", \"push\", \"pop\", \"pop\", \"pop\", \"peek\"]\n[[2], [0, 1], [0, 2], [0, 3], [0], [0], [0], [0]]\n<strong> 输出</strong>\n[null, null, null, null, 2, 1, -1, -1]\n</pre>\n\n<p>&nbsp;</p>\n\n<p><strong>提示:</strong></p>\n\n<ul>\n\t<li><code>0 &lt;= stackNum &lt;= 2</code></li>\n</ul>\n",
"isPaidOnly": false,
"difficulty": "Easy",
"likes": 74,
"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": "Stack",
"slug": "stack",
"translatedName": "栈",
"__typename": "TopicTagNode"
},
{
"name": "Design",
"slug": "design",
"translatedName": "设计",
"__typename": "TopicTagNode"
},
{
"name": "Array",
"slug": "array",
"translatedName": "数组",
"__typename": "TopicTagNode"
}
],
"companyTagStats": null,
"codeSnippets": [
{
"lang": "C++",
"langSlug": "cpp",
"code": "class TripleInOne {\npublic:\n TripleInOne(int stackSize) {\n\n }\n \n void push(int stackNum, int value) {\n\n }\n \n int pop(int stackNum) {\n\n }\n \n int peek(int stackNum) {\n\n }\n \n bool isEmpty(int stackNum) {\n\n }\n};\n\n/**\n * Your TripleInOne object will be instantiated and called as such:\n * TripleInOne* obj = new TripleInOne(stackSize);\n * obj->push(stackNum,value);\n * int param_2 = obj->pop(stackNum);\n * int param_3 = obj->peek(stackNum);\n * bool param_4 = obj->isEmpty(stackNum);\n */",
"__typename": "CodeSnippetNode"
},
{
"lang": "Java",
"langSlug": "java",
"code": "class TripleInOne {\n\n public TripleInOne(int stackSize) {\n\n }\n \n public void push(int stackNum, int value) {\n\n }\n \n public int pop(int stackNum) {\n\n }\n \n public int peek(int stackNum) {\n\n }\n \n public boolean isEmpty(int stackNum) {\n\n }\n}\n\n/**\n * Your TripleInOne object will be instantiated and called as such:\n * TripleInOne obj = new TripleInOne(stackSize);\n * obj.push(stackNum,value);\n * int param_2 = obj.pop(stackNum);\n * int param_3 = obj.peek(stackNum);\n * boolean param_4 = obj.isEmpty(stackNum);\n */",
"__typename": "CodeSnippetNode"
},
{
"lang": "Python",
"langSlug": "python",
"code": "class TripleInOne(object):\n\n def __init__(self, stackSize):\n \"\"\"\n :type stackSize: int\n \"\"\"\n\n\n def push(self, stackNum, value):\n \"\"\"\n :type stackNum: int\n :type value: int\n :rtype: None\n \"\"\"\n\n\n def pop(self, stackNum):\n \"\"\"\n :type stackNum: int\n :rtype: int\n \"\"\"\n\n\n def peek(self, stackNum):\n \"\"\"\n :type stackNum: int\n :rtype: int\n \"\"\"\n\n\n def isEmpty(self, stackNum):\n \"\"\"\n :type stackNum: int\n :rtype: bool\n \"\"\"\n\n\n\n# Your TripleInOne object will be instantiated and called as such:\n# obj = TripleInOne(stackSize)\n# obj.push(stackNum,value)\n# param_2 = obj.pop(stackNum)\n# param_3 = obj.peek(stackNum)\n# param_4 = obj.isEmpty(stackNum)",
"__typename": "CodeSnippetNode"
},
{
"lang": "Python3",
"langSlug": "python3",
"code": "class TripleInOne:\n\n def __init__(self, stackSize: int):\n\n\n def push(self, stackNum: int, value: int) -> None:\n\n\n def pop(self, stackNum: int) -> int:\n\n\n def peek(self, stackNum: int) -> int:\n\n\n def isEmpty(self, stackNum: int) -> bool:\n\n\n\n# Your TripleInOne object will be instantiated and called as such:\n# obj = TripleInOne(stackSize)\n# obj.push(stackNum,value)\n# param_2 = obj.pop(stackNum)\n# param_3 = obj.peek(stackNum)\n# param_4 = obj.isEmpty(stackNum)",
"__typename": "CodeSnippetNode"
},
{
"lang": "C",
"langSlug": "c",
"code": "\n\n\ntypedef struct {\n\n} TripleInOne;\n\n\nTripleInOne* tripleInOneCreate(int stackSize) {\n\n}\n\nvoid tripleInOnePush(TripleInOne* obj, int stackNum, int value) {\n\n}\n\nint tripleInOnePop(TripleInOne* obj, int stackNum) {\n\n}\n\nint tripleInOnePeek(TripleInOne* obj, int stackNum) {\n\n}\n\nbool tripleInOneIsEmpty(TripleInOne* obj, int stackNum) {\n\n}\n\nvoid tripleInOneFree(TripleInOne* obj) {\n\n}\n\n/**\n * Your TripleInOne struct will be instantiated and called as such:\n * TripleInOne* obj = tripleInOneCreate(stackSize);\n * tripleInOnePush(obj, stackNum, value);\n \n * int param_2 = tripleInOnePop(obj, stackNum);\n \n * int param_3 = tripleInOnePeek(obj, stackNum);\n \n * bool param_4 = tripleInOneIsEmpty(obj, stackNum);\n \n * tripleInOneFree(obj);\n*/",
"__typename": "CodeSnippetNode"
},
{
"lang": "C#",
"langSlug": "csharp",
"code": "public class TripleInOne {\n\n public TripleInOne(int stackSize) {\n\n }\n \n public void Push(int stackNum, int value) {\n\n }\n \n public int Pop(int stackNum) {\n\n }\n \n public int Peek(int stackNum) {\n\n }\n \n public bool IsEmpty(int stackNum) {\n\n }\n}\n\n/**\n * Your TripleInOne object will be instantiated and called as such:\n * TripleInOne obj = new TripleInOne(stackSize);\n * obj.Push(stackNum,value);\n * int param_2 = obj.Pop(stackNum);\n * int param_3 = obj.Peek(stackNum);\n * bool param_4 = obj.IsEmpty(stackNum);\n */",
"__typename": "CodeSnippetNode"
},
{
"lang": "JavaScript",
"langSlug": "javascript",
"code": "/**\n * @param {number} stackSize\n */\nvar TripleInOne = function(stackSize) {\n\n};\n\n/** \n * @param {number} stackNum \n * @param {number} value\n * @return {void}\n */\nTripleInOne.prototype.push = function(stackNum, value) {\n\n};\n\n/** \n * @param {number} stackNum\n * @return {number}\n */\nTripleInOne.prototype.pop = function(stackNum) {\n\n};\n\n/** \n * @param {number} stackNum\n * @return {number}\n */\nTripleInOne.prototype.peek = function(stackNum) {\n\n};\n\n/** \n * @param {number} stackNum\n * @return {boolean}\n */\nTripleInOne.prototype.isEmpty = function(stackNum) {\n\n};\n\n/**\n * Your TripleInOne object will be instantiated and called as such:\n * var obj = new TripleInOne(stackSize)\n * obj.push(stackNum,value)\n * var param_2 = obj.pop(stackNum)\n * var param_3 = obj.peek(stackNum)\n * var param_4 = obj.isEmpty(stackNum)\n */",
"__typename": "CodeSnippetNode"
},
{
"lang": "TypeScript",
"langSlug": "typescript",
"code": "class TripleInOne {\n constructor(stackSize: number) {\n\n }\n\n push(stackNum: number, value: number): void {\n\n }\n\n pop(stackNum: number): number {\n\n }\n\n peek(stackNum: number): number {\n\n }\n\n isEmpty(stackNum: number): boolean {\n\n }\n}\n\n/**\n * Your TripleInOne object will be instantiated and called as such:\n * var obj = new TripleInOne(stackSize)\n * obj.push(stackNum,value)\n * var param_2 = obj.pop(stackNum)\n * var param_3 = obj.peek(stackNum)\n * var param_4 = obj.isEmpty(stackNum)\n */",
"__typename": "CodeSnippetNode"
},
{
"lang": "PHP",
"langSlug": "php",
"code": "class TripleInOne {\n /**\n * @param Integer $stackSize\n */\n function __construct($stackSize) {\n\n }\n\n /**\n * @param Integer $stackNum\n * @param Integer $value\n * @return NULL\n */\n function push($stackNum, $value) {\n\n }\n\n /**\n * @param Integer $stackNum\n * @return Integer\n */\n function pop($stackNum) {\n\n }\n\n /**\n * @param Integer $stackNum\n * @return Integer\n */\n function peek($stackNum) {\n\n }\n\n /**\n * @param Integer $stackNum\n * @return Boolean\n */\n function isEmpty($stackNum) {\n\n }\n}\n\n/**\n * Your TripleInOne object will be instantiated and called as such:\n * $obj = TripleInOne($stackSize);\n * $obj->push($stackNum, $value);\n * $ret_2 = $obj->pop($stackNum);\n * $ret_3 = $obj->peek($stackNum);\n * $ret_4 = $obj->isEmpty($stackNum);\n */",
"__typename": "CodeSnippetNode"
},
{
"lang": "Swift",
"langSlug": "swift",
"code": "\nclass TripleInOne {\n\n init(_ stackSize: Int) {\n\n }\n \n func push(_ stackNum: Int, _ value: Int) {\n\n }\n \n func pop(_ stackNum: Int) -> Int {\n\n }\n \n func peek(_ stackNum: Int) -> Int {\n\n }\n \n func isEmpty(_ stackNum: Int) -> Bool {\n\n }\n}\n\n/**\n * Your TripleInOne object will be instantiated and called as such:\n * let obj = TripleInOne(stackSize)\n * obj.push(stackNum, value)\n * let ret_2: Int = obj.pop(stackNum)\n * let ret_3: Int = obj.peek(stackNum)\n * let ret_4: Bool = obj.isEmpty(stackNum)\n */",
"__typename": "CodeSnippetNode"
},
{
"lang": "Kotlin",
"langSlug": "kotlin",
"code": "class TripleInOne(stackSize: Int) {\n\n fun push(stackNum: Int, value: Int) {\n\n }\n\n fun pop(stackNum: Int): Int {\n\n }\n\n fun peek(stackNum: Int): Int {\n\n }\n\n fun isEmpty(stackNum: Int): Boolean {\n\n }\n\n}\n\n/**\n * Your TripleInOne object will be instantiated and called as such:\n * var obj = TripleInOne(stackSize)\n * obj.push(stackNum,value)\n * var param_2 = obj.pop(stackNum)\n * var param_3 = obj.peek(stackNum)\n * var param_4 = obj.isEmpty(stackNum)\n */",
"__typename": "CodeSnippetNode"
},
{
"lang": "Dart",
"langSlug": "dart",
"code": "class TripleInOne {\n\n TripleInOne(int stackSize) {\n\n }\n \n void push(int stackNum, int value) {\n\n }\n \n int pop(int stackNum) {\n\n }\n \n int peek(int stackNum) {\n\n }\n \n bool isEmpty(int stackNum) {\n\n }\n}\n\n/**\n * Your TripleInOne object will be instantiated and called as such:\n * TripleInOne obj = TripleInOne(stackSize);\n * obj.push(stackNum,value);\n * int param2 = obj.pop(stackNum);\n * int param3 = obj.peek(stackNum);\n * bool param4 = obj.isEmpty(stackNum);\n */",
"__typename": "CodeSnippetNode"
},
{
"lang": "Go",
"langSlug": "golang",
"code": "type TripleInOne struct {\n\n}\n\n\nfunc Constructor(stackSize int) TripleInOne {\n\n}\n\n\nfunc (this *TripleInOne) Push(stackNum int, value int) {\n\n}\n\n\nfunc (this *TripleInOne) Pop(stackNum int) int {\n\n}\n\n\nfunc (this *TripleInOne) Peek(stackNum int) int {\n\n}\n\n\nfunc (this *TripleInOne) IsEmpty(stackNum int) bool {\n\n}\n\n\n/**\n * Your TripleInOne object will be instantiated and called as such:\n * obj := Constructor(stackSize);\n * obj.Push(stackNum,value);\n * param_2 := obj.Pop(stackNum);\n * param_3 := obj.Peek(stackNum);\n * param_4 := obj.IsEmpty(stackNum);\n */",
"__typename": "CodeSnippetNode"
},
{
"lang": "Ruby",
"langSlug": "ruby",
"code": "class TripleInOne\n\n=begin\n :type stack_size: Integer\n=end\n def initialize(stack_size)\n\n end\n\n\n=begin\n :type stack_num: Integer\n :type value: Integer\n :rtype: Void\n=end\n def push(stack_num, value)\n\n end\n\n\n=begin\n :type stack_num: Integer\n :rtype: Integer\n=end\n def pop(stack_num)\n\n end\n\n\n=begin\n :type stack_num: Integer\n :rtype: Integer\n=end\n def peek(stack_num)\n\n end\n\n\n=begin\n :type stack_num: Integer\n :rtype: Boolean\n=end\n def is_empty(stack_num)\n\n end\n\n\nend\n\n# Your TripleInOne object will be instantiated and called as such:\n# obj = TripleInOne.new(stack_size)\n# obj.push(stack_num, value)\n# param_2 = obj.pop(stack_num)\n# param_3 = obj.peek(stack_num)\n# param_4 = obj.is_empty(stack_num)",
"__typename": "CodeSnippetNode"
},
{
"lang": "Scala",
"langSlug": "scala",
"code": "class TripleInOne(_stackSize: Int) {\n\n def push(stackNum: Int, value: Int) {\n\n }\n\n def pop(stackNum: Int): Int = {\n\n }\n\n def peek(stackNum: Int): Int = {\n\n }\n\n def isEmpty(stackNum: Int): Boolean = {\n\n }\n\n}\n\n/**\n * Your TripleInOne object will be instantiated and called as such:\n * var obj = new TripleInOne(stackSize)\n * obj.push(stackNum,value)\n * var param_2 = obj.pop(stackNum)\n * var param_3 = obj.peek(stackNum)\n * var param_4 = obj.isEmpty(stackNum)\n */",
"__typename": "CodeSnippetNode"
},
{
"lang": "Rust",
"langSlug": "rust",
"code": "struct TripleInOne {\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 TripleInOne {\n\n fn new(stackSize: i32) -> Self {\n\n }\n \n fn push(&self, stack_num: i32, value: i32) {\n\n }\n \n fn pop(&self, stack_num: i32) -> i32 {\n\n }\n \n fn peek(&self, stack_num: i32) -> i32 {\n\n }\n \n fn is_empty(&self, stack_num: i32) -> bool {\n\n }\n}\n\n/**\n * Your TripleInOne object will be instantiated and called as such:\n * let obj = TripleInOne::new(stackSize);\n * obj.push(stackNum, value);\n * let ret_2: i32 = obj.pop(stackNum);\n * let ret_3: i32 = obj.peek(stackNum);\n * let ret_4: bool = obj.is_empty(stackNum);\n */",
"__typename": "CodeSnippetNode"
},
{
"lang": "Racket",
"langSlug": "racket",
"code": "(define triple-in-one%\n (class object%\n (super-new)\n\n ; stack-size : exact-integer?\n (init-field\n stack-size)\n \n ; push : exact-integer? exact-integer? -> void?\n (define/public (push stackNum value)\n\n )\n ; pop : exact-integer? -> exact-integer?\n (define/public (pop stackNum)\n\n )\n ; peek : exact-integer? -> exact-integer?\n (define/public (peek stackNum)\n\n )\n ; is-empty : exact-integer? -> boolean?\n (define/public (is-empty stackNum)\n\n )))\n\n;; Your triple-in-one% object will be instantiated and called as such:\n;; (define obj (new triple-in-one% [stackSize stackSize]))\n;; (send obj push stack-num value)\n;; (define param_2 (send obj pop stack-num))\n;; (define param_3 (send obj peek stack-num))\n;; (define param_4 (send obj is-empty stack-num))",
"__typename": "CodeSnippetNode"
},
{
"lang": "Erlang",
"langSlug": "erlang",
"code": "-spec triple_in_one_init_(StackSize :: integer()) -> any().\ntriple_in_one_init_(StackSize) ->\n .\n\n-spec triple_in_one_push(StackNum :: integer(), Value :: integer()) -> any().\ntriple_in_one_push(StackNum, Value) ->\n .\n\n-spec triple_in_one_pop(StackNum :: integer()) -> integer().\ntriple_in_one_pop(StackNum) ->\n .\n\n-spec triple_in_one_peek(StackNum :: integer()) -> integer().\ntriple_in_one_peek(StackNum) ->\n .\n\n-spec triple_in_one_is_empty(StackNum :: integer()) -> boolean().\ntriple_in_one_is_empty(StackNum) ->\n .\n\n\n%% Your functions will be called as such:\n%% triple_in_one_init_(StackSize),\n%% triple_in_one_push(StackNum, Value),\n%% Param_2 = triple_in_one_pop(StackNum),\n%% Param_3 = triple_in_one_peek(StackNum),\n%% Param_4 = triple_in_one_is_empty(StackNum),\n\n%% triple_in_one_init_ will be called before every test case, in which you can do some necessary initializations.",
"__typename": "CodeSnippetNode"
},
{
"lang": "Elixir",
"langSlug": "elixir",
"code": "defmodule TripleInOne do\n @spec init_(stack_size :: integer) :: any\n def init_(stack_size) do\n\n end\n\n @spec push(stack_num :: integer, value :: integer) :: any\n def push(stack_num, value) do\n\n end\n\n @spec pop(stack_num :: integer) :: integer\n def pop(stack_num) do\n\n end\n\n @spec peek(stack_num :: integer) :: integer\n def peek(stack_num) do\n\n end\n\n @spec is_empty(stack_num :: integer) :: boolean\n def is_empty(stack_num) do\n\n end\nend\n\n# Your functions will be called as such:\n# TripleInOne.init_(stack_size)\n# TripleInOne.push(stack_num, value)\n# param_2 = TripleInOne.pop(stack_num)\n# param_3 = TripleInOne.peek(stack_num)\n# param_4 = TripleInOne.is_empty(stack_num)\n\n# TripleInOne.init_ will be called before every test case, in which you can do some necessary initializations.",
"__typename": "CodeSnippetNode"
}
],
"stats": "{\"totalAccepted\": \"22.2K\", \"totalSubmission\": \"41.5K\", \"totalAcceptedRaw\": 22159, \"totalSubmissionRaw\": 41479, \"acRate\": \"53.4%\"}",
"hints": [
"栈只是一个数据结构,其中最近添加的元素首先被删除。你能用一个数组来模拟单个栈吗?请记住,有很多可能的解法且每个解法都有其利弊。",
"我们可以通过将数组的前三分之一分配到第一个栈、第二个三分之一分配到第二个栈、最后的第三个三分之一分配到第三个栈,来模拟数组中的三个栈。然而,实际上某个栈可能比其他的大得多。能更灵活地分配吗?",
"如果你想考虑灵活划分,可以移动栈。你能保证使用所有可用的容量吗?",
"试着把数组看作是循环的,这样数组的结尾就“环绕”到了数组的开始部分。"
],
"solution": null,
"status": null,
"sampleTestCase": "[\"TripleInOne\", \"push\", \"push\", \"pop\", \"pop\", \"pop\", \"isEmpty\"]\n[[1], [0, 1], [0, 2], [0], [0], [0], [0]]",
"metaData": "{\"classname\": \"TripleInOne\", \"maxbytesperline\": 200000, \"systemdesign\": true, \"constructor\": {\"params\": [{\"name\": \"stackSize\", \"type\": \"integer\"}]}, \"methods\": [{\"name\": \"push\", \"params\": [{\"name\": \"stackNum\", \"type\": \"integer\"}, {\"name\": \"value\", \"type\": \"integer\"}], \"return\": {\"type\": \"void\"}}, {\"name\": \"pop\", \"params\": [{\"name\": \"stackNum\", \"type\": \"integer\"}], \"return\": {\"type\": \"integer\"}}, {\"name\": \"peek\", \"params\": [{\"name\": \"stackNum\", \"type\": \"integer\"}], \"return\": {\"type\": \"integer\"}}, {\"name\": \"isEmpty\", \"params\": [{\"name\": \"stackNum\", \"type\": \"integer\"}], \"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++ 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"
}
}
}