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/design-neighbor-sum-service.json
2024-08-06 08:46:50 +08:00

195 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": "3516",
"questionFrontendId": "3242",
"categoryTitle": "Algorithms",
"boundTopicId": 2866988,
"title": "Design Neighbor Sum Service",
"titleSlug": "design-neighbor-sum-service",
"content": "<p>You are given a <code>n x n</code> 2D array <code>grid</code> containing <strong>distinct</strong> elements in the range <code>[0, n<sup>2</sup> - 1]</code>.</p>\n\n<p>Implement the <code>neighborSum</code> class:</p>\n\n<ul>\n\t<li><code>neighborSum(int [][]grid)</code> initializes the object.</li>\n\t<li><code>int adjacentSum(int value)</code> returns the <strong>sum</strong> of elements which are adjacent neighbors of <code>value</code>, that is either to the top, left, right, or bottom of <code>value</code> in <code>grid</code>.</li>\n\t<li><code>int diagonalSum(int value)</code> returns the <strong>sum</strong> of elements which are diagonal neighbors of <code>value</code>, that is either to the top-left, top-right, bottom-left, or bottom-right of <code>value</code> in <code>grid</code>.</li>\n</ul>\n\n<p><img alt=\"\" src=\"https://assets.leetcode.com/uploads/2024/06/24/design.png\" style=\"width: 400px; height: 248px;\" /></p>\n\n<p>&nbsp;</p>\n<p><strong class=\"example\">Example 1:</strong></p>\n\n<div class=\"example-block\">\n<p><strong>Input:</strong></p>\n\n<p>[&quot;neighborSum&quot;, &quot;adjacentSum&quot;, &quot;adjacentSum&quot;, &quot;diagonalSum&quot;, &quot;diagonalSum&quot;]</p>\n\n<p>[[[[0, 1, 2], [3, 4, 5], [6, 7, 8]]], [1], [4], [4], [8]]</p>\n\n<p><strong>Output:</strong> [null, 6, 16, 16, 4]</p>\n\n<p><strong>Explanation:</strong></p>\n\n<p><strong class=\"example\"><img alt=\"\" src=\"https://assets.leetcode.com/uploads/2024/06/24/designexample0.png\" style=\"width: 250px; height: 249px;\" /></strong></p>\n\n<ul>\n\t<li>The adjacent neighbors of 1 are 0, 2, and 4.</li>\n\t<li>The adjacent neighbors of 4 are 1, 3, 5, and 7.</li>\n\t<li>The diagonal neighbors of 4 are 0, 2, 6, and 8.</li>\n\t<li>The diagonal neighbor of 8 is 4.</li>\n</ul>\n</div>\n\n<p><strong class=\"example\">Example 2:</strong></p>\n\n<div class=\"example-block\">\n<p><strong>Input:</strong></p>\n\n<p>[&quot;neighborSum&quot;, &quot;adjacentSum&quot;, &quot;diagonalSum&quot;]</p>\n\n<p>[[[[1, 2, 0, 3], [4, 7, 15, 6], [8, 9, 10, 11], [12, 13, 14, 5]]], [15], [9]]</p>\n\n<p><strong>Output:</strong> [null, 23, 45]</p>\n\n<p><strong>Explanation:</strong></p>\n\n<p><strong class=\"example\"><img alt=\"\" src=\"https://assets.leetcode.com/uploads/2024/06/24/designexample2.png\" style=\"width: 300px; height: 300px;\" /></strong></p>\n\n<ul>\n\t<li>The adjacent neighbors of 15 are 0, 10, 7, and 6.</li>\n\t<li>The diagonal neighbors of 9 are 4, 12, 14, and 15.</li>\n</ul>\n</div>\n\n<p>&nbsp;</p>\n<p><strong>Constraints:</strong></p>\n\n<ul>\n\t<li><code>3 &lt;= n == grid.length == grid[0].length &lt;= 10</code></li>\n\t<li><code>0 &lt;= grid[i][j] &lt;= n<sup>2</sup> - 1</code></li>\n\t<li>All <code>grid[i][j]</code> are distinct.</li>\n\t<li><code>value</code> in <code>adjacentSum</code> and <code>diagonalSum</code> will be in the range <code>[0, n<sup>2</sup> - 1]</code>.</li>\n\t<li>At most <code>2 * n<sup>2</sup></code> calls will be made to <code>adjacentSum</code> and <code>diagonalSum</code>.</li>\n</ul>\n",
"translatedTitle": "设计相邻元素求和服务",
"translatedContent": "<p>给你一个 <code>n x n</code> 的二维数组 <code>grid</code>,它包含范围 <code>[0, n<sup>2</sup> - 1]</code> 内的<strong>不重复</strong>元素。</p>\n\n<p>实现 <code>neighborSum</code> 类:</p>\n\n<ul>\n\t<li><code>neighborSum(int [][]grid)</code> 初始化对象。</li>\n\t<li><code>int adjacentSum(int value)</code> 返回在 <code>grid</code> 中与 <code>value</code> 相邻的元素之<strong>和</strong>,相邻指的是与 <code>value</code> 在上、左、右或下的元素。</li>\n\t<li><code>int diagonalSum(int value)</code> 返回在 <code>grid</code> 中与 <code>value</code> 对角线相邻的元素之<strong>和</strong>,对角线相邻指的是与 <code>value</code> 在左上、右上、左下或右下的元素。</li>\n</ul>\n\n<p><img alt=\"\" src=\"https://assets.leetcode.com/uploads/2024/06/24/design.png\" style=\"width: 400px; height: 248px;\" /></p>\n\n<p>&nbsp;</p>\n\n<p><strong class=\"example\">示例 1</strong></p>\n\n<div class=\"example-block\">\n<p><strong>输入:</strong></p>\n\n<p>[\"neighborSum\", \"adjacentSum\", \"adjacentSum\", \"diagonalSum\", \"diagonalSum\"]</p>\n\n<p>[[[[0, 1, 2], [3, 4, 5], [6, 7, 8]]], [1], [4], [4], [8]]</p>\n\n<p><strong>输出:</strong> [null, 6, 16, 16, 4]</p>\n\n<p><strong>解释:</strong></p>\n\n<p><strong class=\"example\"><img alt=\"\" src=\"https://assets.leetcode.com/uploads/2024/06/24/designexample0.png\" style=\"width: 250px; height: 249px;\" /></strong></p>\n\n<ul>\n\t<li>1 的相邻元素是 0、2 和 4。</li>\n\t<li>4 的相邻元素是 1、3、5 和 7。</li>\n\t<li>4 的对角线相邻元素是 0、2、6 和 8。</li>\n\t<li>8 的对角线相邻元素是 4。</li>\n</ul>\n</div>\n\n<p><strong class=\"example\">示例 2</strong></p>\n\n<div class=\"example-block\">\n<p><strong>输入:</strong></p>\n\n<p>[\"neighborSum\", \"adjacentSum\", \"diagonalSum\"]</p>\n\n<p>[[[[1, 2, 0, 3], [4, 7, 15, 6], [8, 9, 10, 11], [12, 13, 14, 5]]], [15], [9]]</p>\n\n<p><strong>输出:</strong> [null, 23, 45]</p>\n\n<p><strong>解释:</strong></p>\n\n<p><strong class=\"example\"><img alt=\"\" src=\"https://assets.leetcode.com/uploads/2024/06/24/designexample2.png\" style=\"width: 300px; height: 300px;\" /></strong></p>\n\n<ul>\n\t<li>15 的相邻元素是 0、10、7 和 6。</li>\n\t<li>9 的对角线相邻元素是 4、12、14 和 15。</li>\n</ul>\n</div>\n\n<p>&nbsp;</p>\n\n<p><strong>提示:</strong></p>\n\n<ul>\n\t<li><code>3 &lt;= n == grid.length == grid[0].length &lt;= 10</code></li>\n\t<li><code>0 &lt;= grid[i][j] &lt;= n<sup>2</sup> - 1</code></li>\n\t<li>所有 <code>grid[i][j]</code> 值均不重复。</li>\n\t<li><code>adjacentSum</code> 和 <code>diagonalSum</code> 中的 <code>value</code> 均在范围 <code>[0, n<sup>2</sup> - 1]</code> 内。</li>\n\t<li>最多会调用 <code>adjacentSum</code> 和 <code>diagonalSum</code> 总共 <code>2 * n<sup>2</sup></code> 次。</li>\n</ul>\n",
"isPaidOnly": false,
"difficulty": "Easy",
"likes": 1,
"dislikes": 0,
"isLiked": null,
"similarQuestions": "[{\"title\": \"Matrix Block Sum\", \"titleSlug\": \"matrix-block-sum\", \"difficulty\": \"Medium\", \"translatedTitle\": \"\\u77e9\\u9635\\u533a\\u57df\\u548c\", \"isPaidOnly\": false}, {\"title\": \"Array With Elements Not Equal to Average of Neighbors\", \"titleSlug\": \"array-with-elements-not-equal-to-average-of-neighbors\", \"difficulty\": \"Medium\", \"translatedTitle\": \"\\u6784\\u9020\\u5143\\u7d20\\u4e0d\\u7b49\\u4e8e\\u4e24\\u76f8\\u90bb\\u5143\\u7d20\\u5e73\\u5747\\u503c\\u7684\\u6570\\u7ec4\", \"isPaidOnly\": false}]",
"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, \"cangjie\": 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": "Matrix",
"slug": "matrix",
"translatedName": "矩阵",
"__typename": "TopicTagNode"
},
{
"name": "Simulation",
"slug": "simulation",
"translatedName": "模拟",
"__typename": "TopicTagNode"
}
],
"companyTagStats": null,
"codeSnippets": [
{
"lang": "C++",
"langSlug": "cpp",
"code": "class neighborSum {\npublic:\n neighborSum(vector<vector<int>>& grid) {\n\n }\n \n int adjacentSum(int value) {\n\n }\n \n int diagonalSum(int value) {\n\n }\n};\n\n/**\n * Your neighborSum object will be instantiated and called as such:\n * neighborSum* obj = new neighborSum(grid);\n * int param_1 = obj->adjacentSum(value);\n * int param_2 = obj->diagonalSum(value);\n */",
"__typename": "CodeSnippetNode"
},
{
"lang": "Java",
"langSlug": "java",
"code": "class neighborSum {\n\n public neighborSum(int[][] grid) {\n\n }\n \n public int adjacentSum(int value) {\n\n }\n \n public int diagonalSum(int value) {\n\n }\n}\n\n/**\n * Your neighborSum object will be instantiated and called as such:\n * neighborSum obj = new neighborSum(grid);\n * int param_1 = obj.adjacentSum(value);\n * int param_2 = obj.diagonalSum(value);\n */",
"__typename": "CodeSnippetNode"
},
{
"lang": "Python",
"langSlug": "python",
"code": "class neighborSum(object):\n\n def __init__(self, grid):\n \"\"\"\n :type grid: List[List[int]]\n \"\"\"\n\n\n def adjacentSum(self, value):\n \"\"\"\n :type value: int\n :rtype: int\n \"\"\"\n\n\n def diagonalSum(self, value):\n \"\"\"\n :type value: int\n :rtype: int\n \"\"\"\n\n\n\n# Your neighborSum object will be instantiated and called as such:\n# obj = neighborSum(grid)\n# param_1 = obj.adjacentSum(value)\n# param_2 = obj.diagonalSum(value)",
"__typename": "CodeSnippetNode"
},
{
"lang": "Python3",
"langSlug": "python3",
"code": "class neighborSum:\n\n def __init__(self, grid: List[List[int]]):\n\n\n def adjacentSum(self, value: int) -> int:\n\n\n def diagonalSum(self, value: int) -> int:\n\n\n\n# Your neighborSum object will be instantiated and called as such:\n# obj = neighborSum(grid)\n# param_1 = obj.adjacentSum(value)\n# param_2 = obj.diagonalSum(value)",
"__typename": "CodeSnippetNode"
},
{
"lang": "C",
"langSlug": "c",
"code": "\n\n\ntypedef struct {\n \n} neighborSum;\n\n\nneighborSum* neighborSumCreate(int** grid, int gridSize, int* gridColSize) {\n \n}\n\nint neighborSumAdjacentSum(neighborSum* obj, int value) {\n \n}\n\nint neighborSumDiagonalSum(neighborSum* obj, int value) {\n \n}\n\nvoid neighborSumFree(neighborSum* obj) {\n \n}\n\n/**\n * Your neighborSum struct will be instantiated and called as such:\n * neighborSum* obj = neighborSumCreate(grid, gridSize, gridColSize);\n * int param_1 = neighborSumAdjacentSum(obj, value);\n \n * int param_2 = neighborSumDiagonalSum(obj, value);\n \n * neighborSumFree(obj);\n*/",
"__typename": "CodeSnippetNode"
},
{
"lang": "C#",
"langSlug": "csharp",
"code": "public class neighborSum {\n\n public neighborSum(int[][] grid) {\n\n }\n \n public int AdjacentSum(int value) {\n\n }\n \n public int DiagonalSum(int value) {\n\n }\n}\n\n/**\n * Your neighborSum object will be instantiated and called as such:\n * neighborSum obj = new neighborSum(grid);\n * int param_1 = obj.AdjacentSum(value);\n * int param_2 = obj.DiagonalSum(value);\n */",
"__typename": "CodeSnippetNode"
},
{
"lang": "JavaScript",
"langSlug": "javascript",
"code": "/**\n * @param {number[][]} grid\n */\nvar neighborSum = function(grid) {\n\n};\n\n/** \n * @param {number} value\n * @return {number}\n */\nneighborSum.prototype.adjacentSum = function(value) {\n\n};\n\n/** \n * @param {number} value\n * @return {number}\n */\nneighborSum.prototype.diagonalSum = function(value) {\n\n};\n\n/**\n * Your neighborSum object will be instantiated and called as such:\n * var obj = new neighborSum(grid)\n * var param_1 = obj.adjacentSum(value)\n * var param_2 = obj.diagonalSum(value)\n */",
"__typename": "CodeSnippetNode"
},
{
"lang": "TypeScript",
"langSlug": "typescript",
"code": "class neighborSum {\n constructor(grid: number[][]) {\n \n }\n\n adjacentSum(value: number): number {\n \n }\n\n diagonalSum(value: number): number {\n \n }\n}\n\n/**\n * Your neighborSum object will be instantiated and called as such:\n * var obj = new neighborSum(grid)\n * var param_1 = obj.adjacentSum(value)\n * var param_2 = obj.diagonalSum(value)\n */",
"__typename": "CodeSnippetNode"
},
{
"lang": "PHP",
"langSlug": "php",
"code": "class neighborSum {\n /**\n * @param Integer[][] $grid\n */\n function __construct($grid) {\n\n }\n\n /**\n * @param Integer $value\n * @return Integer\n */\n function adjacentSum($value) {\n\n }\n\n /**\n * @param Integer $value\n * @return Integer\n */\n function diagonalSum($value) {\n\n }\n}\n\n/**\n * Your neighborSum object will be instantiated and called as such:\n * $obj = neighborSum($grid);\n * $ret_1 = $obj->adjacentSum($value);\n * $ret_2 = $obj->diagonalSum($value);\n */",
"__typename": "CodeSnippetNode"
},
{
"lang": "Swift",
"langSlug": "swift",
"code": "\nclass neighborSum {\n\n init(_ grid: [[Int]]) {\n\n }\n \n func adjacentSum(_ value: Int) -> Int {\n\n }\n \n func diagonalSum(_ value: Int) -> Int {\n\n }\n}\n\n/**\n * Your neighborSum object will be instantiated and called as such:\n * let obj = neighborSum(grid)\n * let ret_1: Int = obj.adjacentSum(value)\n * let ret_2: Int = obj.diagonalSum(value)\n */",
"__typename": "CodeSnippetNode"
},
{
"lang": "Kotlin",
"langSlug": "kotlin",
"code": "class neighborSum(grid: Array<IntArray>) {\n\n fun adjacentSum(value: Int): Int {\n\n }\n\n fun diagonalSum(value: Int): Int {\n\n }\n\n}\n\n/**\n * Your neighborSum object will be instantiated and called as such:\n * var obj = neighborSum(grid)\n * var param_1 = obj.adjacentSum(value)\n * var param_2 = obj.diagonalSum(value)\n */",
"__typename": "CodeSnippetNode"
},
{
"lang": "Dart",
"langSlug": "dart",
"code": "class neighborSum {\n\n neighborSum(List<List<int>> grid) {\n \n }\n \n int adjacentSum(int value) {\n \n }\n \n int diagonalSum(int value) {\n \n }\n}\n\n/**\n * Your neighborSum object will be instantiated and called as such:\n * neighborSum obj = neighborSum(grid);\n * int param1 = obj.adjacentSum(value);\n * int param2 = obj.diagonalSum(value);\n */",
"__typename": "CodeSnippetNode"
},
{
"lang": "Go",
"langSlug": "golang",
"code": "type neighborSum struct {\n\n}\n\n\nfunc Constructor(grid [][]int) neighborSum {\n\n}\n\n\nfunc (this *neighborSum) AdjacentSum(value int) int {\n\n}\n\n\nfunc (this *neighborSum) DiagonalSum(value int) int {\n\n}\n\n\n/**\n * Your neighborSum object will be instantiated and called as such:\n * obj := Constructor(grid);\n * param_1 := obj.AdjacentSum(value);\n * param_2 := obj.DiagonalSum(value);\n */",
"__typename": "CodeSnippetNode"
},
{
"lang": "Ruby",
"langSlug": "ruby",
"code": "class neighborSum\n\n=begin\n :type grid: Integer[][]\n=end\n def initialize(grid)\n\n end\n\n\n=begin\n :type value: Integer\n :rtype: Integer\n=end\n def adjacent_sum(value)\n\n end\n\n\n=begin\n :type value: Integer\n :rtype: Integer\n=end\n def diagonal_sum(value)\n\n end\n\n\nend\n\n# Your neighborSum object will be instantiated and called as such:\n# obj = neighborSum.new(grid)\n# param_1 = obj.adjacent_sum(value)\n# param_2 = obj.diagonal_sum(value)",
"__typename": "CodeSnippetNode"
},
{
"lang": "Scala",
"langSlug": "scala",
"code": "class neighborSum(_grid: Array[Array[Int]]) {\n\n def adjacentSum(value: Int): Int = {\n \n }\n\n def diagonalSum(value: Int): Int = {\n \n }\n\n}\n\n/**\n * Your neighborSum object will be instantiated and called as such:\n * val obj = new neighborSum(grid)\n * val param_1 = obj.adjacentSum(value)\n * val param_2 = obj.diagonalSum(value)\n */",
"__typename": "CodeSnippetNode"
},
{
"lang": "Rust",
"langSlug": "rust",
"code": "struct neighborSum {\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 neighborSum {\n\n fn new(grid: Vec<Vec<i32>>) -> Self {\n\n }\n \n fn adjacent_sum(&self, value: i32) -> i32 {\n\n }\n \n fn diagonal_sum(&self, value: i32) -> i32 {\n\n }\n}\n\n/**\n * Your neighborSum object will be instantiated and called as such:\n * let obj = neighborSum::new(grid);\n * let ret_1: i32 = obj.adjacent_sum(value);\n * let ret_2: i32 = obj.diagonal_sum(value);\n */",
"__typename": "CodeSnippetNode"
},
{
"lang": "Racket",
"langSlug": "racket",
"code": "(define neighbor-sum%\n (class object%\n (super-new)\n \n ; grid : (listof (listof exact-integer?))\n (init-field\n grid)\n \n ; adjacent-sum : exact-integer? -> exact-integer?\n (define/public (adjacent-sum value)\n )\n ; diagonal-sum : exact-integer? -> exact-integer?\n (define/public (diagonal-sum value)\n )))\n\n;; Your neighbor-sum% object will be instantiated and called as such:\n;; (define obj (new neighbor-sum% [grid grid]))\n;; (define param_1 (send obj adjacent-sum value))\n;; (define param_2 (send obj diagonal-sum value))",
"__typename": "CodeSnippetNode"
},
{
"lang": "Erlang",
"langSlug": "erlang",
"code": "-spec neighbor_sum_init_(Grid :: [[integer()]]) -> any().\nneighbor_sum_init_(Grid) ->\n .\n\n-spec neighbor_sum_adjacent_sum(Value :: integer()) -> integer().\nneighbor_sum_adjacent_sum(Value) ->\n .\n\n-spec neighbor_sum_diagonal_sum(Value :: integer()) -> integer().\nneighbor_sum_diagonal_sum(Value) ->\n .\n\n\n%% Your functions will be called as such:\n%% neighbor_sum_init_(Grid),\n%% Param_1 = neighbor_sum_adjacent_sum(Value),\n%% Param_2 = neighbor_sum_diagonal_sum(Value),\n\n%% neighbor_sum_init_ will be called before every test case, in which you can do some necessary initializations.",
"__typename": "CodeSnippetNode"
},
{
"lang": "Elixir",
"langSlug": "elixir",
"code": "defmodule NeighborSum do\n @spec init_(grid :: [[integer]]) :: any\n def init_(grid) do\n \n end\n\n @spec adjacent_sum(value :: integer) :: integer\n def adjacent_sum(value) do\n \n end\n\n @spec diagonal_sum(value :: integer) :: integer\n def diagonal_sum(value) do\n \n end\nend\n\n# Your functions will be called as such:\n# NeighborSum.init_(grid)\n# param_1 = NeighborSum.adjacent_sum(value)\n# param_2 = NeighborSum.diagonal_sum(value)\n\n# NeighborSum.init_ will be called before every test case, in which you can do some necessary initializations.",
"__typename": "CodeSnippetNode"
}
],
"stats": "{\"totalAccepted\": \"3.4K\", \"totalSubmission\": \"4K\", \"totalAcceptedRaw\": 3410, \"totalSubmissionRaw\": 4047, \"acRate\": \"84.3%\"}",
"hints": [
"Find the cell <code>(i, j)</code> in which the element is present.",
"You can store the coordinates for each value."
],
"solution": null,
"status": null,
"sampleTestCase": "[\"neighborSum\",\"adjacentSum\",\"adjacentSum\",\"diagonalSum\",\"diagonalSum\"]\n[[[[0,1,2],[3,4,5],[6,7,8]]],[1],[4],[4],[8]]",
"metaData": "{\n \"classname\": \"neighborSum\",\n \"constructor\": {\n \"params\": [\n {\n \"type\": \"integer[][]\",\n \"name\": \"grid\"\n }\n ]\n },\n \"methods\": [\n {\n \"params\": [\n {\n \"type\": \"integer\",\n \"name\": \"value\"\n }\n ],\n \"name\": \"adjacentSum\",\n \"return\": {\n \"type\": \"integer\"\n }\n },\n {\n \"params\": [\n {\n \"type\": \"integer\",\n \"name\": \"value\"\n }\n ],\n \"name\": \"diagonalSum\",\n \"return\": {\n \"type\": \"integer\"\n }\n }\n ],\n \"return\": {\n \"type\": \"boolean\"\n },\n \"systemdesign\": true\n}",
"judgerAvailable": true,
"judgeType": "large",
"mysqlSchemas": [],
"enableRunCode": true,
"envInfo": "{\"cpp\":[\"C++\",\"<p>\\u7248\\u672c\\uff1a<code>clang 17<\\/code> \\u91c7\\u7528\\u6700\\u65b0 C++ 23 \\u6807\\u51c6\\uff0c\\u5e76\\u4f7f\\u7528 GCC 13 \\u63d0\\u4f9b\\u7684 <code>libstdc++<\\/code>\\u3002<\\/p>\\r\\n\\r\\n<p>\\u7f16\\u8bd1\\u65f6\\uff0c\\u5c06\\u4f1a\\u91c7\\u7528 <code>-O2<\\/code> \\u7ea7\\u4f18\\u5316\\uff0c\\u5e76\\u63d0\\u4f9b <code>-gline-tables-only<\\/code> \\u53c2\\u6570\\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 21<\\/code>\\u3002\\u4f7f\\u7528\\u7f16\\u8bd1\\u53c2\\u6570 <code>--enable-preview --release 21<\\/code><\\/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 13<\\/code>\\uff0c\\u91c7\\u7528 GNU11 \\u6807\\u51c6\\u3002<\\/p>\\r\\n\\r\\n<p>\\u7f16\\u8bd1\\u65f6\\uff0c\\u5c06\\u4f1a\\u91c7\\u7528 <code>-O2<\\/code> \\u7ea7\\u4f18\\u5316\\uff0c\\u5e76\\u63d0\\u4f9b <code>-g1<\\/code> \\u53c2\\u6570\\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:\\/\\/learn.microsoft.com\\/en-us\\/dotnet\\/csharp\\/whats-new\\/csharp-12\\\" target=\\\"_blank\\\">C# 12<\\/a> \\u8fd0\\u884c\\u5728 .NET 8 \\u4e0a<\\/p>\"],\"javascript\":[\"JavaScript\",\"<p>\\u7248\\u672c\\uff1a<code>Node.js 20.10.0<\\/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\\/blob\\/v5\\/README.md\\\" target=\\\"_blank\\\"> datastructures-js\\/priority-queue@5.4.0<\\/a> \\u548c <a href=\\\"https:\\/\\/github.com\\/datastructures-js\\/queue\\/tree\\/v4.2.3\\\" target=\\\"_blank\\\"> datastructures-js\\/queue@4.2.3<\\/a>\\u3002<\\/p>\"],\"ruby\":[\"Ruby\",\"<p>\\u4f7f\\u7528<code>Ruby 3.2<\\/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.9<\\/code><\\/p>\\r\\n\\r\\n<p>\\u60a8\\u53ef\\u4ee5\\u4f7f\\u7528 <a href=\\\"https:\\/\\/github.com\\/apple\\/swift-algorithms\\/tree\\/1.2.0\\\" target=\\\"_blank\\\">swift-algorithms 1.2.0<\\/a> \\u548c <a href=\\\"https:\\/\\/github.com\\/apple\\/swift-collections\\/tree\\/1.1.0\\\" target=\\\"_blank\\\">swift-collections 1.1.0<\\/a><\\/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:\\/\\/pkg.go.dev\\/github.com\\/emirpasic\\/gods@v1.18.1\\\" target=\\\"_blank\\\">https:\\/\\/pkg.go.dev\\/github.com\\/emirpasic\\/gods@v1.18.1<\\/a> \\u548c <a href=\\\"https:\\/\\/pkg.go.dev\\/github.com\\/emirpasic\\/gods\\/v2@v2.0.0-alpha\\\" target=\\\"_blank\\\">https:\\/\\/pkg.go.dev\\/github.com\\/emirpasic\\/gods\\/v2@v2.0.0-alpha<\\/a> \\u7b2c\\u4e09\\u65b9\\u5e93\\u3002<\\/p>\"],\"python3\":[\"Python3\",\"<p>\\u7248\\u672c\\uff1a<code>Python 3.11<\\/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 3.3.1<\\/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.79.0<\\/code><\\/p>\\r\\n\\r\\n<p>\\u652f\\u6301 crates.io \\u7684 <a href=\\\"https:\\/\\/crates.io\\/crates\\/rand\\\" target=\\\"_blank\\\">rand<\\/a> \\u548c <a href=\\\"https:\\/\\/crates.io\\/crates\\/regex\\\" target=\\\"_blank\\\">regex<\\/a><\\/p>\"],\"php\":[\"PHP\",\"<p><code>PHP 8.2<\\/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\\/blob\\/v5\\/README.md\\\" target=\\\"_blank\\\"> datastructures-js\\/priority-queue@5.4.0<\\/a> \\u548c <a href=\\\"https:\\/\\/github.com\\/datastructures-js\\/queue\\/tree\\/v4.2.3\\\" target=\\\"_blank\\\"> datastructures-js\\/queue@4.2.3<\\/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.11<\\/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 26\"],\"elixir\":[\"Elixir\",\"Elixir 1.15 with Erlang\\/OTP 26\"],\"dart\":[\"Dart\",\"<p>Dart 3.2\\u3002\\u60a8\\u53ef\\u4ee5\\u4f7f\\u7528 <a href=\\\"https:\\/\\/pub.dev\\/packages\\/collection\\/versions\\/1.18.0\\\" target=\\\"_blank\\\">collection<\\/a> \\u5305<\\/p>\\r\\n\\r\\n<p>\\u60a8\\u7684\\u4ee3\\u7801\\u5c06\\u4f1a\\u88ab\\u4e0d\\u7f16\\u8bd1\\u76f4\\u63a5\\u8fd0\\u884c<\\/p>\"]}",
"book": null,
"isSubscribed": false,
"isDailyQuestion": false,
"dailyRecordStatus": null,
"editorType": "CKEDITOR",
"ugcQuestionId": null,
"style": "LEETCODE",
"exampleTestcases": "[\"neighborSum\",\"adjacentSum\",\"adjacentSum\",\"diagonalSum\",\"diagonalSum\"]\n[[[[0,1,2],[3,4,5],[6,7,8]]],[1],[4],[4],[8]]\n[\"neighborSum\",\"adjacentSum\",\"diagonalSum\"]\n[[[[1,2,0,3],[4,7,15,6],[8,9,10,11],[12,13,14,5]]],[15],[9]]",
"__typename": "QuestionNode"
}
}
}