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/operations-lcci.json

190 lines
30 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": "100350",
"questionFrontendId": "面试题 16.09",
"categoryTitle": "LCCI",
"boundTopicId": 91313,
"title": "Operations LCCI",
"titleSlug": "operations-lcci",
"content": "<p>Write methods to implement the multiply, subtract, and divide operations for integers. The results of all of these are integers. Use only the add operator.</p>\r\n\r\n<p>You should implement following methods:</p>\r\n\r\n<ul>\r\n\t<li><code>Operations()</code>&nbsp; constructor</li>\r\n\t<li><code>minus(a, b)</code>&nbsp; Subtraction, returns&nbsp;<code>a - b</code></li>\r\n\t<li><code>multiply(a, b)</code>&nbsp; Multiplication, returns&nbsp;<code>a * b</code></li>\r\n\t<li><code>divide(a, b)</code>&nbsp; Division, returns&nbsp;<code>a / b</code></li>\r\n</ul>\r\n\r\n<p><strong>Example: </strong></p>\r\n\r\n<pre>\r\nOperations operations = new Operations();\r\noperations.minus(1, 2); //returns -1\r\noperations.multiply(3, 4); //returns 12\r\noperations.divide(5, -2); //returns -2\r\n</pre>\r\n\r\n<p><strong>Note: </strong></p>\r\n\r\n<ul>\r\n\t<li>You can assume inputs are always valid, that is, e.g., denominator will not be 0 in division.</li>\r\n\t<li>The number of calls will not exceed 1000.</li>\r\n</ul>\r\n",
"translatedTitle": "运算",
"translatedContent": "<p>请实现整数数字的乘法、减法和除法运算,运算结果均为整数数字,程序中只允许使用加法运算符和逻辑运算符,允许程序中出现正负常数,不允许使用位运算。</p>\n<p>你的实现应该支持如下操作:</p>\n<ul>\n<li><code>Operations()</code> 构造函数</li>\n<li><code>minus(a, b)</code> 减法,返回<code>a - b</code></li>\n<li><code>multiply(a, b)</code> 乘法,返回<code>a * b</code></li>\n<li><code>divide(a, b)</code> 除法,返回<code>a / b</code></li>\n</ul>\n<p><strong>示例:</strong></p>\n<pre>Operations operations = new Operations();\noperations.minus(1, 2); //返回-1\noperations.multiply(3, 4); //返回12\noperations.divide(5, -2); //返回-2\n</pre>\n<p><strong>提示:</strong></p>\n<ul>\n<li>你可以假设函数输入一定是有效的例如不会出现除法分母为0的情况</li>\n<li>单个用例的函数调用次数不会超过1000次</li>\n</ul>\n",
"isPaidOnly": false,
"difficulty": "Medium",
"likes": 29,
"dislikes": 0,
"isLiked": null,
"similarQuestions": "[]",
"contributors": [],
"langToValidPlayground": "{\"cpp\": false, \"java\": false, \"python\": false, \"python3\": false, \"mysql\": false, \"mssql\": false, \"oraclesql\": false, \"c\": false, \"csharp\": false, \"javascript\": false, \"typescript\": false, \"bash\": false, \"php\": false, \"swift\": false, \"kotlin\": false, \"dart\": false, \"golang\": false, \"ruby\": false, \"scala\": false, \"html\": false, \"pythonml\": false, \"rust\": false, \"racket\": false, \"erlang\": false, \"elixir\": false, \"pythondata\": false, \"react\": false, \"vanillajs\": false, \"postgresql\": false}",
"topicTags": [
{
"name": "Design",
"slug": "design",
"translatedName": "设计",
"__typename": "TopicTagNode"
},
{
"name": "Math",
"slug": "math",
"translatedName": "数学",
"__typename": "TopicTagNode"
}
],
"companyTagStats": null,
"codeSnippets": [
{
"lang": "C++",
"langSlug": "cpp",
"code": "class Operations {\npublic:\n Operations() {\n\n }\n \n int minus(int a, int b) {\n\n }\n \n int multiply(int a, int b) {\n\n }\n \n int divide(int a, int b) {\n\n }\n};\n\n/**\n * Your Operations object will be instantiated and called as such:\n * Operations* obj = new Operations();\n * int param_1 = obj->minus(a,b);\n * int param_2 = obj->multiply(a,b);\n * int param_3 = obj->divide(a,b);\n */",
"__typename": "CodeSnippetNode"
},
{
"lang": "Java",
"langSlug": "java",
"code": "class Operations {\n\n public Operations() {\n\n }\n \n public int minus(int a, int b) {\n\n }\n \n public int multiply(int a, int b) {\n\n }\n \n public int divide(int a, int b) {\n\n }\n}\n\n/**\n * Your Operations object will be instantiated and called as such:\n * Operations obj = new Operations();\n * int param_1 = obj.minus(a,b);\n * int param_2 = obj.multiply(a,b);\n * int param_3 = obj.divide(a,b);\n */",
"__typename": "CodeSnippetNode"
},
{
"lang": "Python",
"langSlug": "python",
"code": "class Operations(object):\n\n def __init__(self):\n\n\n def minus(self, a, b):\n \"\"\"\n :type a: int\n :type b: int\n :rtype: int\n \"\"\"\n\n\n def multiply(self, a, b):\n \"\"\"\n :type a: int\n :type b: int\n :rtype: int\n \"\"\"\n\n\n def divide(self, a, b):\n \"\"\"\n :type a: int\n :type b: int\n :rtype: int\n \"\"\"\n\n\n\n# Your Operations object will be instantiated and called as such:\n# obj = Operations()\n# param_1 = obj.minus(a,b)\n# param_2 = obj.multiply(a,b)\n# param_3 = obj.divide(a,b)",
"__typename": "CodeSnippetNode"
},
{
"lang": "Python3",
"langSlug": "python3",
"code": "class Operations:\n\n def __init__(self):\n\n\n def minus(self, a: int, b: int) -> int:\n\n\n def multiply(self, a: int, b: int) -> int:\n\n\n def divide(self, a: int, b: int) -> int:\n\n\n\n# Your Operations object will be instantiated and called as such:\n# obj = Operations()\n# param_1 = obj.minus(a,b)\n# param_2 = obj.multiply(a,b)\n# param_3 = obj.divide(a,b)",
"__typename": "CodeSnippetNode"
},
{
"lang": "C",
"langSlug": "c",
"code": "\n\n\ntypedef struct {\n\n} Operations;\n\n\nOperations* operationsCreate() {\n\n}\n\nint operationsMinus(Operations* obj, int a, int b) {\n\n}\n\nint operationsMultiply(Operations* obj, int a, int b) {\n\n}\n\nint operationsDivide(Operations* obj, int a, int b) {\n\n}\n\nvoid operationsFree(Operations* obj) {\n\n}\n\n/**\n * Your Operations struct will be instantiated and called as such:\n * Operations* obj = operationsCreate();\n * int param_1 = operationsMinus(obj, a, b);\n \n * int param_2 = operationsMultiply(obj, a, b);\n \n * int param_3 = operationsDivide(obj, a, b);\n \n * operationsFree(obj);\n*/",
"__typename": "CodeSnippetNode"
},
{
"lang": "C#",
"langSlug": "csharp",
"code": "public class Operations {\n\n public Operations() {\n\n }\n \n public int Minus(int a, int b) {\n\n }\n \n public int Multiply(int a, int b) {\n\n }\n \n public int Divide(int a, int b) {\n\n }\n}\n\n/**\n * Your Operations object will be instantiated and called as such:\n * Operations obj = new Operations();\n * int param_1 = obj.Minus(a,b);\n * int param_2 = obj.Multiply(a,b);\n * int param_3 = obj.Divide(a,b);\n */",
"__typename": "CodeSnippetNode"
},
{
"lang": "JavaScript",
"langSlug": "javascript",
"code": "\nvar Operations = function() {\n\n};\n\n/** \n * @param {number} a \n * @param {number} b\n * @return {number}\n */\nOperations.prototype.minus = function(a, b) {\n\n};\n\n/** \n * @param {number} a \n * @param {number} b\n * @return {number}\n */\nOperations.prototype.multiply = function(a, b) {\n\n};\n\n/** \n * @param {number} a \n * @param {number} b\n * @return {number}\n */\nOperations.prototype.divide = function(a, b) {\n\n};\n\n/**\n * Your Operations object will be instantiated and called as such:\n * var obj = new Operations()\n * var param_1 = obj.minus(a,b)\n * var param_2 = obj.multiply(a,b)\n * var param_3 = obj.divide(a,b)\n */",
"__typename": "CodeSnippetNode"
},
{
"lang": "TypeScript",
"langSlug": "typescript",
"code": "class Operations {\n constructor() {\n\n }\n\n minus(a: number, b: number): number {\n\n }\n\n multiply(a: number, b: number): number {\n\n }\n\n divide(a: number, b: number): number {\n\n }\n}\n\n/**\n * Your Operations object will be instantiated and called as such:\n * var obj = new Operations()\n * var param_1 = obj.minus(a,b)\n * var param_2 = obj.multiply(a,b)\n * var param_3 = obj.divide(a,b)\n */",
"__typename": "CodeSnippetNode"
},
{
"lang": "PHP",
"langSlug": "php",
"code": "class Operations {\n /**\n */\n function __construct() {\n\n }\n\n /**\n * @param Integer $a\n * @param Integer $b\n * @return Integer\n */\n function minus($a, $b) {\n\n }\n\n /**\n * @param Integer $a\n * @param Integer $b\n * @return Integer\n */\n function multiply($a, $b) {\n\n }\n\n /**\n * @param Integer $a\n * @param Integer $b\n * @return Integer\n */\n function divide($a, $b) {\n\n }\n}\n\n/**\n * Your Operations object will be instantiated and called as such:\n * $obj = Operations();\n * $ret_1 = $obj->minus($a, $b);\n * $ret_2 = $obj->multiply($a, $b);\n * $ret_3 = $obj->divide($a, $b);\n */",
"__typename": "CodeSnippetNode"
},
{
"lang": "Swift",
"langSlug": "swift",
"code": "\nclass Operations {\n\n init() {\n\n }\n \n func minus(_ a: Int, _ b: Int) -> Int {\n\n }\n \n func multiply(_ a: Int, _ b: Int) -> Int {\n\n }\n \n func divide(_ a: Int, _ b: Int) -> Int {\n\n }\n}\n\n/**\n * Your Operations object will be instantiated and called as such:\n * let obj = Operations()\n * let ret_1: Int = obj.minus(a, b)\n * let ret_2: Int = obj.multiply(a, b)\n * let ret_3: Int = obj.divide(a, b)\n */",
"__typename": "CodeSnippetNode"
},
{
"lang": "Kotlin",
"langSlug": "kotlin",
"code": "class Operations() {\n\n fun minus(a: Int, b: Int): Int {\n\n }\n\n fun multiply(a: Int, b: Int): Int {\n\n }\n\n fun divide(a: Int, b: Int): Int {\n\n }\n\n}\n\n/**\n * Your Operations object will be instantiated and called as such:\n * var obj = Operations()\n * var param_1 = obj.minus(a,b)\n * var param_2 = obj.multiply(a,b)\n * var param_3 = obj.divide(a,b)\n */",
"__typename": "CodeSnippetNode"
},
{
"lang": "Dart",
"langSlug": "dart",
"code": "class Operations {\n\n Operations() {\n\n }\n \n int minus(int a, int b) {\n\n }\n \n int multiply(int a, int b) {\n\n }\n \n int divide(int a, int b) {\n\n }\n}\n\n/**\n * Your Operations object will be instantiated and called as such:\n * Operations obj = Operations();\n * int param1 = obj.minus(a,b);\n * int param2 = obj.multiply(a,b);\n * int param3 = obj.divide(a,b);\n */",
"__typename": "CodeSnippetNode"
},
{
"lang": "Go",
"langSlug": "golang",
"code": "type Operations struct {\n\n}\n\n\nfunc Constructor() Operations {\n\n}\n\n\nfunc (this *Operations) Minus(a int, b int) int {\n\n}\n\n\nfunc (this *Operations) Multiply(a int, b int) int {\n\n}\n\n\nfunc (this *Operations) Divide(a int, b int) int {\n\n}\n\n\n/**\n * Your Operations object will be instantiated and called as such:\n * obj := Constructor();\n * param_1 := obj.Minus(a,b);\n * param_2 := obj.Multiply(a,b);\n * param_3 := obj.Divide(a,b);\n */",
"__typename": "CodeSnippetNode"
},
{
"lang": "Ruby",
"langSlug": "ruby",
"code": "class Operations\n def initialize()\n\n end\n\n\n=begin\n :type a: Integer\n :type b: Integer\n :rtype: Integer\n=end\n def minus(a, b)\n\n end\n\n\n=begin\n :type a: Integer\n :type b: Integer\n :rtype: Integer\n=end\n def multiply(a, b)\n\n end\n\n\n=begin\n :type a: Integer\n :type b: Integer\n :rtype: Integer\n=end\n def divide(a, b)\n\n end\n\n\nend\n\n# Your Operations object will be instantiated and called as such:\n# obj = Operations.new()\n# param_1 = obj.minus(a, b)\n# param_2 = obj.multiply(a, b)\n# param_3 = obj.divide(a, b)",
"__typename": "CodeSnippetNode"
},
{
"lang": "Scala",
"langSlug": "scala",
"code": "class Operations() {\n\n def minus(a: Int, b: Int): Int = {\n\n }\n\n def multiply(a: Int, b: Int): Int = {\n\n }\n\n def divide(a: Int, b: Int): Int = {\n\n }\n\n}\n\n/**\n * Your Operations object will be instantiated and called as such:\n * var obj = new Operations()\n * var param_1 = obj.minus(a,b)\n * var param_2 = obj.multiply(a,b)\n * var param_3 = obj.divide(a,b)\n */",
"__typename": "CodeSnippetNode"
},
{
"lang": "Rust",
"langSlug": "rust",
"code": "struct Operations {\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 Operations {\n\n fn new() -> Self {\n\n }\n \n fn minus(&self, a: i32, b: i32) -> i32 {\n\n }\n \n fn multiply(&self, a: i32, b: i32) -> i32 {\n\n }\n \n fn divide(&self, a: i32, b: i32) -> i32 {\n\n }\n}\n\n/**\n * Your Operations object will be instantiated and called as such:\n * let obj = Operations::new();\n * let ret_1: i32 = obj.minus(a, b);\n * let ret_2: i32 = obj.multiply(a, b);\n * let ret_3: i32 = obj.divide(a, b);\n */",
"__typename": "CodeSnippetNode"
},
{
"lang": "Racket",
"langSlug": "racket",
"code": "(define operations%\n (class object%\n (super-new)\n (init-field)\n \n ; minus : exact-integer? exact-integer? -> exact-integer?\n (define/public (minus a b)\n\n )\n ; multiply : exact-integer? exact-integer? -> exact-integer?\n (define/public (multiply a b)\n\n )\n ; divide : exact-integer? exact-integer? -> exact-integer?\n (define/public (divide a b)\n\n )))\n\n;; Your operations% object will be instantiated and called as such:\n;; (define obj (new operations%))\n;; (define param_1 (send obj minus a b))\n;; (define param_2 (send obj multiply a b))\n;; (define param_3 (send obj divide a b))",
"__typename": "CodeSnippetNode"
},
{
"lang": "Erlang",
"langSlug": "erlang",
"code": "-spec operations_init_() -> any().\noperations_init_() ->\n .\n\n-spec operations_minus(A :: integer(), B :: integer()) -> integer().\noperations_minus(A, B) ->\n .\n\n-spec operations_multiply(A :: integer(), B :: integer()) -> integer().\noperations_multiply(A, B) ->\n .\n\n-spec operations_divide(A :: integer(), B :: integer()) -> integer().\noperations_divide(A, B) ->\n .\n\n\n%% Your functions will be called as such:\n%% operations_init_(),\n%% Param_1 = operations_minus(A, B),\n%% Param_2 = operations_multiply(A, B),\n%% Param_3 = operations_divide(A, B),\n\n%% operations_init_ will be called before every test case, in which you can do some necessary initializations.",
"__typename": "CodeSnippetNode"
},
{
"lang": "Elixir",
"langSlug": "elixir",
"code": "defmodule Operations do\n @spec init_() :: any\n def init_() do\n\n end\n\n @spec minus(a :: integer, b :: integer) :: integer\n def minus(a, b) do\n\n end\n\n @spec multiply(a :: integer, b :: integer) :: integer\n def multiply(a, b) do\n\n end\n\n @spec divide(a :: integer, b :: integer) :: integer\n def divide(a, b) do\n\n end\nend\n\n# Your functions will be called as such:\n# Operations.init_()\n# param_1 = Operations.minus(a, b)\n# param_2 = Operations.multiply(a, b)\n# param_3 = Operations.divide(a, b)\n\n# Operations.init_ will be called before every test case, in which you can do some necessary initializations.",
"__typename": "CodeSnippetNode"
}
],
"stats": "{\"totalAccepted\": \"4.3K\", \"totalSubmission\": \"7.7K\", \"totalAcceptedRaw\": 4320, \"totalSubmissionRaw\": 7653, \"acRate\": \"56.4%\"}",
"hints": [
"从减法开始,逐步解决。一旦完成了一个函数,你可以用它来实现其他函数。",
"减法:取负函数(将正整数转换为负数)有用吗?你可以使用加法操作符来实现吗?",
"当a > b时a b > 0。你能得到a b的符号位吗",
"你考虑过如何处理a b中的整数溢出吗"
],
"solution": null,
"status": null,
"sampleTestCase": "[\"Operations\",\"minus\",\"minus\",\"multiply\",\"multiply\",\"divide\",\"divide\"]\n[[],[0,-2147483647],[-1,2147483647],[-1,-2147483647],[-100,21474836],[2147483647,-1],[-2147483648,1]]",
"metaData": "{\"classname\": \"Operations\", \"maxbytesperline\": 200000, \"systemdesign\": true, \"constructor\": {\"params\": []}, \"methods\": [{\"name\": \"minus\", \"params\": [{\"name\": \"a\", \"type\": \"integer\"}, {\"name\": \"b\", \"type\": \"integer\"}], \"return\": {\"type\": \"integer\"}}, {\"name\": \"multiply\", \"params\": [{\"name\": \"a\", \"type\": \"integer\"}, {\"name\": \"b\", \"type\": \"integer\"}], \"return\": {\"type\": \"integer\"}}, {\"name\": \"divide\", \"params\": [{\"name\": \"a\", \"type\": \"integer\"}, {\"name\": \"b\", \"type\": \"integer\"}], \"return\": {\"type\": \"integer\"}}], \"params\": [{\"name\": \"inputs\", \"type\": \"integer[]\"}, {\"name\": \"inputs\", \"type\": \"integer[]\"}], \"return\": {\"type\": \"list<String>\", \"dealloc\": true}}",
"judgerAvailable": true,
"judgeType": "large",
"mysqlSchemas": [],
"enableRunCode": true,
"envInfo": "{\"cpp\":[\"C++\",\"<p>\\u7248\\u672c\\uff1a<code>clang 11<\\/code> \\u91c7\\u7528\\u6700\\u65b0C++ 20\\u6807\\u51c6\\u3002<\\/p>\\r\\n\\r\\n<p>\\u7f16\\u8bd1\\u65f6\\uff0c\\u5c06\\u4f1a\\u91c7\\u7528<code>-O2<\\/code>\\u7ea7\\u4f18\\u5316\\u3002<a href=\\\"https:\\/\\/github.com\\/google\\/sanitizers\\/wiki\\/AddressSanitizer\\\" target=\\\"_blank\\\">AddressSanitizer<\\/a> \\u4e5f\\u88ab\\u5f00\\u542f\\u6765\\u68c0\\u6d4b<code>out-of-bounds<\\/code>\\u548c<code>use-after-free<\\/code>\\u9519\\u8bef\\u3002<\\/p>\\r\\n\\r\\n<p>\\u4e3a\\u4e86\\u4f7f\\u7528\\u65b9\\u4fbf\\uff0c\\u5927\\u90e8\\u5206\\u6807\\u51c6\\u5e93\\u7684\\u5934\\u6587\\u4ef6\\u5df2\\u7ecf\\u88ab\\u81ea\\u52a8\\u5bfc\\u5165\\u3002<\\/p>\"],\"java\":[\"Java\",\"<p>\\u7248\\u672c\\uff1a<code>OpenJDK 17<\\/code>\\u3002\\u53ef\\u4ee5\\u4f7f\\u7528Java 8\\u7684\\u7279\\u6027\\u4f8b\\u5982\\uff0clambda expressions \\u548c stream API\\u3002<\\/p>\\r\\n\\r\\n<p>\\u4e3a\\u4e86\\u65b9\\u4fbf\\u8d77\\u89c1\\uff0c\\u5927\\u90e8\\u5206\\u6807\\u51c6\\u5e93\\u7684\\u5934\\u6587\\u4ef6\\u5df2\\u88ab\\u5bfc\\u5165\\u3002<\\/p>\\r\\n\\r\\n<p>\\u5305\\u542b Pair \\u7c7b: https:\\/\\/docs.oracle.com\\/javase\\/8\\/javafx\\/api\\/javafx\\/util\\/Pair.html <\\/p>\"],\"python\":[\"Python\",\"<p>\\u7248\\u672c\\uff1a <code>Python 2.7.12<\\/code><\\/p>\\r\\n\\r\\n<p>\\u4e3a\\u4e86\\u65b9\\u4fbf\\u8d77\\u89c1\\uff0c\\u5927\\u90e8\\u5206\\u5e38\\u7528\\u5e93\\u5df2\\u7ecf\\u88ab\\u81ea\\u52a8 \\u5bfc\\u5165\\uff0c\\u5982\\uff1a<a href=\\\"https:\\/\\/docs.python.org\\/2\\/library\\/array.html\\\" target=\\\"_blank\\\">array<\\/a>, <a href=\\\"https:\\/\\/docs.python.org\\/2\\/library\\/bisect.html\\\" target=\\\"_blank\\\">bisect<\\/a>, <a href=\\\"https:\\/\\/docs.python.org\\/2\\/library\\/collections.html\\\" target=\\\"_blank\\\">collections<\\/a>\\u3002\\u5982\\u679c\\u60a8\\u9700\\u8981\\u4f7f\\u7528\\u5176\\u4ed6\\u5e93\\u51fd\\u6570\\uff0c\\u8bf7\\u81ea\\u884c\\u5bfc\\u5165\\u3002<\\/p>\\r\\n\\r\\n<p>\\u6ce8\\u610f Python 2.7 <a href=\\\"https:\\/\\/www.python.org\\/dev\\/peps\\/pep-0373\\/\\\" target=\\\"_blank\\\">\\u5c06\\u57282020\\u5e74\\u540e\\u4e0d\\u518d\\u7ef4\\u62a4<\\/a>\\u3002 \\u5982\\u60f3\\u4f7f\\u7528\\u6700\\u65b0\\u7248\\u7684Python\\uff0c\\u8bf7\\u9009\\u62e9Python 3\\u3002<\\/p>\"],\"c\":[\"C\",\"<p>\\u7248\\u672c\\uff1a<code>GCC 8.2<\\/code>\\uff0c\\u91c7\\u7528GNU11\\u6807\\u51c6\\u3002<\\/p>\\r\\n\\r\\n<p>\\u7f16\\u8bd1\\u65f6\\uff0c\\u5c06\\u4f1a\\u91c7\\u7528<code>-O1<\\/code>\\u7ea7\\u4f18\\u5316\\u3002 <a href=\\\"https:\\/\\/github.com\\/google\\/sanitizers\\/wiki\\/AddressSanitizer\\\" target=\\\"_blank\\\">AddressSanitizer<\\/a>\\u4e5f\\u88ab\\u5f00\\u542f\\u6765\\u68c0\\u6d4b<code>out-of-bounds<\\/code>\\u548c<code>use-after-free<\\/code>\\u9519\\u8bef\\u3002<\\/p>\\r\\n\\r\\n<p>\\u4e3a\\u4e86\\u4f7f\\u7528\\u65b9\\u4fbf\\uff0c\\u5927\\u90e8\\u5206\\u6807\\u51c6\\u5e93\\u7684\\u5934\\u6587\\u4ef6\\u5df2\\u7ecf\\u88ab\\u81ea\\u52a8\\u5bfc\\u5165\\u3002<\\/p>\\r\\n\\r\\n<p>\\u5982\\u60f3\\u4f7f\\u7528\\u54c8\\u5e0c\\u8868\\u8fd0\\u7b97, \\u60a8\\u53ef\\u4ee5\\u4f7f\\u7528 <a href=\\\"https:\\/\\/troydhanson.github.io\\/uthash\\/\\\" target=\\\"_blank\\\">uthash<\\/a>\\u3002 \\\"uthash.h\\\"\\u5df2\\u7ecf\\u9ed8\\u8ba4\\u88ab\\u5bfc\\u5165\\u3002\\u8bf7\\u770b\\u5982\\u4e0b\\u793a\\u4f8b:<\\/p>\\r\\n\\r\\n<p><b>1. \\u5f80\\u54c8\\u5e0c\\u8868\\u4e2d\\u6dfb\\u52a0\\u4e00\\u4e2a\\u5bf9\\u8c61\\uff1a<\\/b>\\r\\n<pre>\\r\\nstruct hash_entry {\\r\\n int id; \\/* we'll use this field as the key *\\/\\r\\n char name[10];\\r\\n UT_hash_handle hh; \\/* makes this structure hashable *\\/\\r\\n};\\r\\n\\r\\nstruct hash_entry *users = NULL;\\r\\n\\r\\nvoid add_user(struct hash_entry *s) {\\r\\n HASH_ADD_INT(users, id, s);\\r\\n}\\r\\n<\\/pre>\\r\\n<\\/p>\\r\\n\\r\\n<p><b>2. \\u5728\\u54c8\\u5e0c\\u8868\\u4e2d\\u67e5\\u627e\\u4e00\\u4e2a\\u5bf9\\u8c61\\uff1a<\\/b>\\r\\n<pre>\\r\\nstruct hash_entry *find_user(int user_id) {\\r\\n struct hash_entry *s;\\r\\n HASH_FIND_INT(users, &user_id, s);\\r\\n return s;\\r\\n}\\r\\n<\\/pre>\\r\\n<\\/p>\\r\\n\\r\\n<p><b>3. \\u4ece\\u54c8\\u5e0c\\u8868\\u4e2d\\u5220\\u9664\\u4e00\\u4e2a\\u5bf9\\u8c61\\uff1a<\\/b>\\r\\n<pre>\\r\\nvoid delete_user(struct hash_entry *user) {\\r\\n HASH_DEL(users, user); \\r\\n}\\r\\n<\\/pre>\\r\\n<\\/p>\"],\"csharp\":[\"C#\",\"<p><a href=\\\"https:\\/\\/docs.microsoft.com\\/en-us\\/dotnet\\/csharp\\/whats-new\\/csharp-9\\\" target=\\\"_blank\\\">C# 10<\\/a> \\u8fd0\\u884c\\u5728 .NET 6 \\u4e0a<\\/p>\"],\"javascript\":[\"JavaScript\",\"<p>\\u7248\\u672c\\uff1a<code>Node.js 16.13.2<\\/code><\\/p>\\r\\n\\r\\n<p>\\u60a8\\u7684\\u4ee3\\u7801\\u5728\\u6267\\u884c\\u65f6\\u5c06\\u5e26\\u4e0a <code>--harmony<\\/code> \\u6807\\u8bb0\\u6765\\u5f00\\u542f <a href=\\\"http:\\/\\/node.green\\/\\\" target=\\\"_blank\\\">\\u65b0\\u7248ES6\\u7279\\u6027<\\/a>\\u3002<\\/p>\\r\\n\\r\\n<p><a href=\\\"https:\\/\\/lodash.com\\\" target=\\\"_blank\\\">lodash.js<\\/a> \\u5e93\\u5df2\\u7ecf\\u9ed8\\u8ba4\\u88ab\\u5305\\u542b\\u3002<\\/p>\\r\\n\\r\\n<p> \\u5982\\u9700\\u4f7f\\u7528\\u961f\\u5217\\/\\u4f18\\u5148\\u961f\\u5217\\uff0c\\u60a8\\u53ef\\u4f7f\\u7528 <a href=\\\"https:\\/\\/github.com\\/datastructures-js\\/priority-queue\\/tree\\/fb4fdb984834421279aeb081df7af624d17c2a03\\\" target=\\\"_blank\\\"> datastructures-js\\/priority-queue@5.3.0<\\/a> \\u548c <a href=\\\"https:\\/\\/github.com\\/datastructures-js\\/queue\\/tree\\/e63563025a5a805aa16928cb53bcd517bfea9230\\\" target=\\\"_blank\\\"> datastructures-js\\/queue@4.2.1<\\/a>\\u3002<\\/p>\"],\"ruby\":[\"Ruby\",\"<p>\\u4f7f\\u7528<code>Ruby 3.1<\\/code>\\u6267\\u884c<\\/p>\\r\\n\\r\\n<p>\\u4e00\\u4e9b\\u5e38\\u7528\\u7684\\u6570\\u636e\\u7ed3\\u6784\\u5df2\\u5728 Algorithms \\u6a21\\u5757\\u4e2d\\u63d0\\u4f9b\\uff1ahttps:\\/\\/www.rubydoc.info\\/github\\/kanwei\\/algorithms\\/Algorithms<\\/p>\"],\"swift\":[\"Swift\",\"<p>\\u7248\\u672c\\uff1a<code>Swift 5.5.2<\\/code><\\/p>\\r\\n\\r\\n<p>\\u6211\\u4eec\\u901a\\u5e38\\u4fdd\\u8bc1\\u66f4\\u65b0\\u5230 <a href=\\\"https:\\/\\/swift.org\\/download\\/\\\" target=\\\"_blank\\\">Apple\\u653e\\u51fa\\u7684\\u6700\\u65b0\\u7248Swift<\\/a>\\u3002\\u5982\\u679c\\u60a8\\u53d1\\u73b0Swift\\u4e0d\\u662f\\u6700\\u65b0\\u7248\\u7684\\uff0c\\u8bf7\\u8054\\u7cfb\\u6211\\u4eec\\uff01\\u6211\\u4eec\\u5c06\\u5c3d\\u5feb\\u66f4\\u65b0\\u3002<\\/p>\"],\"golang\":[\"Go\",\"<p>\\u7248\\u672c\\uff1a<code>Go 1.21<\\/code><\\/p>\\r\\n\\r\\n<p>\\u652f\\u6301 <a href=\\\"https:\\/\\/github.com\\/emirpasic\\/gods\\/tree\\/v1.18.1\\\" target=\\\"_blank\\\">https:\\/\\/godoc.org\\/github.com\\/emirpasic\\/gods@v1.18.1<\\/a> \\u7b2c\\u4e09\\u65b9\\u5e93\\u3002<\\/p>\"],\"python3\":[\"Python3\",\"<p>\\u7248\\u672c\\uff1a<code>Python 3.10<\\/code><\\/p>\\r\\n\\r\\n<p>\\u4e3a\\u4e86\\u65b9\\u4fbf\\u8d77\\u89c1\\uff0c\\u5927\\u90e8\\u5206\\u5e38\\u7528\\u5e93\\u5df2\\u7ecf\\u88ab\\u81ea\\u52a8 \\u5bfc\\u5165\\uff0c\\u5982<a href=\\\"https:\\/\\/docs.python.org\\/3\\/library\\/array.html\\\" target=\\\"_blank\\\">array<\\/a>, <a href=\\\"https:\\/\\/docs.python.org\\/3\\/library\\/bisect.html\\\" target=\\\"_blank\\\">bisect<\\/a>, <a href=\\\"https:\\/\\/docs.python.org\\/3\\/library\\/collections.html\\\" target=\\\"_blank\\\">collections<\\/a>\\u3002 \\u5982\\u679c\\u60a8\\u9700\\u8981\\u4f7f\\u7528\\u5176\\u4ed6\\u5e93\\u51fd\\u6570\\uff0c\\u8bf7\\u81ea\\u884c\\u5bfc\\u5165\\u3002<\\/p>\\r\\n\\r\\n<p>\\u5982\\u9700\\u4f7f\\u7528 Map\\/TreeMap \\u6570\\u636e\\u7ed3\\u6784\\uff0c\\u60a8\\u53ef\\u4f7f\\u7528 <a href=\\\"http:\\/\\/www.grantjenks.com\\/docs\\/sortedcontainers\\/\\\" target=\\\"_blank\\\">sortedcontainers<\\/a> \\u5e93\\u3002<\\/p>\"],\"scala\":[\"Scala\",\"<p>\\u7248\\u672c\\uff1a<code>Scala 2.13<\\/code><\\/p>\"],\"kotlin\":[\"Kotlin\",\"<p>\\u7248\\u672c\\uff1a<code>Kotlin 1.9.0<\\/code><\\/p>\\r\\n\\r\\n<p>\\u6211\\u4eec\\u4f7f\\u7528\\u7684\\u662f JetBrains \\u63d0\\u4f9b\\u7684 experimental compiler\\u3002\\u5982\\u679c\\u60a8\\u8ba4\\u4e3a\\u60a8\\u9047\\u5230\\u4e86\\u7f16\\u8bd1\\u5668\\u76f8\\u5173\\u7684\\u95ee\\u9898\\uff0c\\u8bf7\\u5411\\u6211\\u4eec\\u53cd\\u9988<\\/p>\"],\"rust\":[\"Rust\",\"<p>\\u7248\\u672c\\uff1a<code>rust 1.58.1<\\/code><\\/p>\\r\\n\\r\\n<p>\\u652f\\u6301 crates.io \\u7684 <a href=\\\"https:\\/\\/crates.io\\/crates\\/rand\\\" target=\\\"_blank\\\">rand<\\/a><\\/p>\"],\"php\":[\"PHP\",\"<p><code>PHP 8.1<\\/code>.<\\/p>\\r\\n\\r\\n<p>With bcmath module.<\\/p>\"],\"typescript\":[\"TypeScript\",\"<p>TypeScript 5.1.6<\\/p>\\r\\n\\r\\n<p>Compile Options: --alwaysStrict --strictBindCallApply --strictFunctionTypes --target ES2022<\\/p>\\r\\n\\r\\n<p><a href=\\\"https:\\/\\/lodash.com\\\" target=\\\"_blank\\\">lodash.js<\\/a> \\u5e93\\u5df2\\u7ecf\\u9ed8\\u8ba4\\u88ab\\u5305\\u542b\\u3002<\\/p>\\r\\n\\r\\n<p> \\u5982\\u9700\\u4f7f\\u7528\\u961f\\u5217\\/\\u4f18\\u5148\\u961f\\u5217\\uff0c\\u60a8\\u53ef\\u4f7f\\u7528 <a href=\\\"https:\\/\\/github.com\\/datastructures-js\\/priority-queue\\/tree\\/fb4fdb984834421279aeb081df7af624d17c2a03\\\" target=\\\"_blank\\\"> datastructures-js\\/priority-queue@5.3.0<\\/a> \\u548c <a href=\\\"https:\\/\\/github.com\\/datastructures-js\\/queue\\/tree\\/e63563025a5a805aa16928cb53bcd517bfea9230\\\" target=\\\"_blank\\\"> datastructures-js\\/queue@4.2.1<\\/a>\\u3002<\\/p>\"],\"racket\":[\"Racket\",\"<p><a href=\\\"https:\\/\\/docs.racket-lang.org\\/guide\\/performance.html#%28tech._c%29\\\" target=\\\"_blank\\\">Racket CS<\\/a> v8.3<\\/p>\\r\\n\\r\\n<p>\\u4f7f\\u7528 #lang racket<\\/p>\\r\\n\\r\\n<p>\\u5df2\\u9884\\u5148 (require data\\/gvector data\\/queue data\\/order data\\/heap). \\u82e5\\u9700\\u4f7f\\u7528\\u5176\\u5b83\\u6570\\u636e\\u7ed3\\u6784\\uff0c\\u53ef\\u81ea\\u884c require\\u3002<\\/p>\"],\"erlang\":[\"Erlang\",\"Erlang\\/OTP 24.2\"],\"elixir\":[\"Elixir\",\"Elixir 1.13.0 with Erlang\\/OTP 24.2\"],\"dart\":[\"Dart\",\"<p>Dart 2.17.3<\\/p>\\r\\n\\r\\n<p>\\u60a8\\u7684\\u4ee3\\u7801\\u5c06\\u4f1a\\u88ab\\u4e0d\\u7f16\\u8bd1\\u76f4\\u63a5\\u8fd0\\u884c<\\/p>\"]}",
"book": {
"id": "2",
"bookName": "《程序员面试金典(第 6 版)》",
"pressName": "图灵公司",
"source": "《程序员面试金典(第 6 版)》独家授权",
"shortDescription": "英文版Cracking the Coding Interview源自硅谷程序员的面试红宝书",
"fullDescription": "本书是原谷歌资深面试官的经验之作,帮助了许多想要加入脸书、苹果、谷歌等 IT 名企的求职者拿到 Dream offer。本专题的 100+ 编程面试题是在原书基础上精心挑选出来的,帮助你轻松应战 IT 名企技术面试。",
"bookImgUrl": "https://assets.leetcode-cn.com/aliyun-lc-upload/uploads/2019/09/30/book_2.jpg",
"pressImgUrl": "https://assets.leetcode-cn.com/aliyun-lc-upload/uploads/2020/02/11/logo20190828-02.png",
"productUrl": "",
"__typename": "CategoryInfoNode"
},
"isSubscribed": false,
"isDailyQuestion": false,
"dailyRecordStatus": null,
"editorType": "CKEDITOR",
"ugcQuestionId": null,
"style": "LEETCODE",
"exampleTestcases": "[\"Operations\",\"minus\",\"minus\",\"multiply\",\"multiply\",\"divide\",\"divide\"]\n[[],[0,-2147483647],[-1,2147483647],[-1,-2147483647],[-100,21474836],[2147483647,-1],[-2147483648,1]]",
"__typename": "QuestionNode"
}
}
}