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/maximize-value-of-function-in-a-ball-passing-game.json
2023-12-09 19:57:46 +08:00

187 lines
32 KiB
JSON
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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": "3032",
"questionFrontendId": "2836",
"categoryTitle": "Algorithms",
"boundTopicId": 2404057,
"title": "Maximize Value of Function in a Ball Passing Game",
"titleSlug": "maximize-value-of-function-in-a-ball-passing-game",
"content": "<p>You are given a <strong>0-indexed</strong> integer array <code>receiver</code> of length <code>n</code> and an integer <code>k</code>.</p>\n\n<p>There are <code>n</code> players having a <strong>unique id</strong> in the range <code>[0, n - 1]</code> who will play a ball passing game, and <code>receiver[i]</code> is the id of the player who receives passes from the player with id <code>i</code>. Players can pass to themselves, <strong>i.e.</strong> <code>receiver[i]</code> may be equal to <code>i</code>.</p>\n\n<p>You must choose one of the <code>n</code> players as the starting player for the game, and the ball will be passed <strong>exactly</strong> <code>k</code> times starting from the chosen player.</p>\n\n<p>For a chosen starting player having id <code>x</code>, we define a function <code>f(x)</code> that denotes the <strong>sum</strong> of <code>x</code> and the <strong>ids</strong> of all players who receive the ball during the <code>k</code> passes, <strong>including repetitions</strong>. In other words, <code>f(x) = x + receiver[x] + receiver[receiver[x]] + ... + receiver<sup>(k)</sup>[x]</code>.</p>\n\n<p>Your task is to choose a starting player having id <code>x</code> that <strong>maximizes</strong> the value of <code>f(x)</code>.</p>\n\n<p>Return <em>an integer denoting the <strong>maximum</strong> value of the function.</em></p>\n\n<p><strong>Note:</strong> <code>receiver</code> may contain duplicates.</p>\n\n<p>&nbsp;</p>\n<p><strong class=\"example\">Example 1:</strong></p>\n\n<table border=\"1\" cellspacing=\"3\" style=\"border-collapse: separate; text-align: center;\">\n\t<tbody>\n\t\t<tr>\n\t\t\t<th style=\"padding: 5px; border: 1px solid black;\">Pass Number</th>\n\t\t\t<th style=\"padding: 5px; border: 1px solid black;\">Sender ID</th>\n\t\t\t<th style=\"padding: 5px; border: 1px solid black;\">Receiver ID</th>\n\t\t\t<th style=\"padding: 5px; border: 1px solid black;\">x + Receiver IDs</th>\n\t\t</tr>\n\t\t<tr>\n\t\t\t<td style=\"padding: 5px; border: 1px solid black;\">&nbsp;</td>\n\t\t\t<td style=\"padding: 5px; border: 1px solid black;\">&nbsp;</td>\n\t\t\t<td style=\"padding: 5px; border: 1px solid black;\">&nbsp;</td>\n\t\t\t<td style=\"padding: 5px; border: 1px solid black;\">2</td>\n\t\t</tr>\n\t\t<tr>\n\t\t\t<td style=\"padding: 5px; border: 1px solid black;\">1</td>\n\t\t\t<td style=\"padding: 5px; border: 1px solid black;\">2</td>\n\t\t\t<td style=\"padding: 5px; border: 1px solid black;\">1</td>\n\t\t\t<td style=\"padding: 5px; border: 1px solid black;\">3</td>\n\t\t</tr>\n\t\t<tr>\n\t\t\t<td style=\"padding: 5px; border: 1px solid black;\">2</td>\n\t\t\t<td style=\"padding: 5px; border: 1px solid black;\">1</td>\n\t\t\t<td style=\"padding: 5px; border: 1px solid black;\">0</td>\n\t\t\t<td style=\"padding: 5px; border: 1px solid black;\">3</td>\n\t\t</tr>\n\t\t<tr>\n\t\t\t<td style=\"padding: 5px; border: 1px solid black;\">3</td>\n\t\t\t<td style=\"padding: 5px; border: 1px solid black;\">0</td>\n\t\t\t<td style=\"padding: 5px; border: 1px solid black;\">2</td>\n\t\t\t<td style=\"padding: 5px; border: 1px solid black;\">5</td>\n\t\t</tr>\n\t\t<tr>\n\t\t\t<td style=\"padding: 5px; border: 1px solid black;\">4</td>\n\t\t\t<td style=\"padding: 5px; border: 1px solid black;\">2</td>\n\t\t\t<td style=\"padding: 5px; border: 1px solid black;\">1</td>\n\t\t\t<td style=\"padding: 5px; border: 1px solid black;\">6</td>\n\t\t</tr>\n\t</tbody>\n</table>\n\n<pre>\n<strong>Input:</strong> receiver = [2,0,1], k = 4\n<strong>Output:</strong> 6\n<strong>Explanation:</strong> The table above shows a simulation of the game starting with the player having id x = 2. \nFrom the table, f(2) is equal to 6. \nIt can be shown that 6 is the maximum achievable value of the function. \nHence, the output is 6. \n</pre>\n\n<p><strong class=\"example\">Example 2:</strong></p>\n\n<table border=\"1\" cellspacing=\"3\" style=\"border-collapse: separate; text-align: center;\">\n\t<tbody>\n\t\t<tr>\n\t\t\t<th style=\"padding: 5px; border: 1px solid black;\">Pass Number</th>\n\t\t\t<th style=\"padding: 5px; border: 1px solid black;\">Sender ID</th>\n\t\t\t<th style=\"padding: 5px; border: 1px solid black;\">Receiver ID</th>\n\t\t\t<th style=\"padding: 5px; border: 1px solid black;\">x + Receiver IDs</th>\n\t\t</tr>\n\t\t<tr>\n\t\t\t<td style=\"padding: 5px; border: 1px solid black;\">&nbsp;</td>\n\t\t\t<td style=\"padding: 5px; border: 1px solid black;\">&nbsp;</td>\n\t\t\t<td style=\"padding: 5px; border: 1px solid black;\">&nbsp;</td>\n\t\t\t<td style=\"padding: 5px; border: 1px solid black;\">4</td>\n\t\t</tr>\n\t\t<tr>\n\t\t\t<td style=\"padding: 5px; border: 1px solid black;\">1</td>\n\t\t\t<td style=\"padding: 5px; border: 1px solid black;\">4</td>\n\t\t\t<td style=\"padding: 5px; border: 1px solid black;\">3</td>\n\t\t\t<td style=\"padding: 5px; border: 1px solid black;\">7</td>\n\t\t</tr>\n\t\t<tr>\n\t\t\t<td style=\"padding: 5px; border: 1px solid black;\">2</td>\n\t\t\t<td style=\"padding: 5px; border: 1px solid black;\">3</td>\n\t\t\t<td style=\"padding: 5px; border: 1px solid black;\">2</td>\n\t\t\t<td style=\"padding: 5px; border: 1px solid black;\">9</td>\n\t\t</tr>\n\t\t<tr>\n\t\t\t<td style=\"padding: 5px; border: 1px solid black;\">3</td>\n\t\t\t<td style=\"padding: 5px; border: 1px solid black;\">2</td>\n\t\t\t<td style=\"padding: 5px; border: 1px solid black;\">1</td>\n\t\t\t<td style=\"padding: 5px; border: 1px solid black;\">10</td>\n\t\t</tr>\n\t</tbody>\n</table>\n\n<pre>\n<strong>Input:</strong> receiver = [1,1,1,2,3], k = 3\n<strong>Output:</strong> 10\n<strong>Explanation:</strong> The table above shows a simulation of the game starting with the player having id x = 4. \nFrom the table, f(4) is equal to 10. \nIt can be shown that 10 is the maximum achievable value of the function. \nHence, the output is 10. \n</pre>\n\n<p>&nbsp;</p>\n<p><strong>Constraints:</strong></p>\n\n<ul>\n\t<li><code>1 &lt;= receiver.length == n &lt;= 10<sup>5</sup></code></li>\n\t<li><code>0 &lt;= receiver[i] &lt;= n - 1</code></li>\n\t<li><code>1 &lt;= k &lt;= 10<sup>10</sup></code></li>\n</ul>\n",
"translatedTitle": "在传球游戏中最大化函数值",
"translatedContent": "<p>给你一个长度为 <code>n</code>&nbsp;下标从 <strong>0</strong>&nbsp;开始的整数数组&nbsp;<code>receiver</code>&nbsp;和一个整数&nbsp;<code>k</code>&nbsp;。</p>\n\n<p>总共有&nbsp;<code>n</code>&nbsp;名玩家,玩家 <strong>编号</strong>&nbsp;互不相同,且为&nbsp;<code>[0, n - 1]</code>&nbsp;中的整数。这些玩家玩一个传球游戏,<code>receiver[i]</code>&nbsp;表示编号为 <code>i</code>&nbsp;的玩家会传球给编号为 <code>receiver[i]</code>&nbsp;的玩家。玩家可以传球给自己,也就是说&nbsp;<code>receiver[i]</code>&nbsp;可能等于&nbsp;<code>i</code>&nbsp;。</p>\n\n<p>你需要从 <code>n</code>&nbsp;名玩家中选择一名玩家作为游戏开始时唯一手中有球的玩家,球会被传 <strong>恰好</strong>&nbsp;<code>k</code>&nbsp;次。</p>\n\n<p>如果选择编号为 <code>x</code>&nbsp;的玩家作为开始玩家,定义函数&nbsp;<code>f(x)</code>&nbsp;表示从编号为&nbsp;<code>x</code>&nbsp;的玩家开始,<code>k</code>&nbsp;次传球内所有接触过球玩家的编号之&nbsp;<strong>和</strong>&nbsp;,如果有玩家多次触球,则 <strong>累加多次</strong>&nbsp;。换句话说,&nbsp;<code>f(x) = x + receiver[x] + receiver[receiver[x]] + ... + receiver<sup>(k)</sup>[x]</code>&nbsp;。</p>\n\n<p>你的任务时选择开始玩家 <code>x</code>&nbsp;,目的是<strong>&nbsp;最大化</strong>&nbsp;<code>f(x)</code>&nbsp;。</p>\n\n<p>请你返回函数的 <strong>最大值</strong>&nbsp;。</p>\n\n<p><strong>注意:</strong><code>receiver</code>&nbsp;可能含有重复元素。</p>\n\n<p>&nbsp;</p>\n\n<p><strong class=\"example\">示例 1</strong></p>\n\n<table border=\"1\" cellspacing=\"3\" style=\"border-collapse: separate; text-align: center;\">\n\t<tbody>\n\t\t<tr>\n\t\t\t<th style=\"padding: 5px; border: 1px solid black;\">传递次数</th>\n\t\t\t<th style=\"padding: 5px; border: 1px solid black;\">传球者编号</th>\n\t\t\t<th style=\"padding: 5px; border: 1px solid black;\">接球者编号</th>\n\t\t\t<th style=\"padding: 5px; border: 1px solid black;\">x + 所有接球者编号</th>\n\t\t</tr>\n\t\t<tr>\n\t\t\t<td style=\"padding: 5px; border: 1px solid black;\">&nbsp;</td>\n\t\t\t<td style=\"padding: 5px; border: 1px solid black;\">&nbsp;</td>\n\t\t\t<td style=\"padding: 5px; border: 1px solid black;\">&nbsp;</td>\n\t\t\t<td style=\"padding: 5px; border: 1px solid black;\">2</td>\n\t\t</tr>\n\t\t<tr>\n\t\t\t<td style=\"padding: 5px; border: 1px solid black;\">1</td>\n\t\t\t<td style=\"padding: 5px; border: 1px solid black;\">2</td>\n\t\t\t<td style=\"padding: 5px; border: 1px solid black;\">1</td>\n\t\t\t<td style=\"padding: 5px; border: 1px solid black;\">3</td>\n\t\t</tr>\n\t\t<tr>\n\t\t\t<td style=\"padding: 5px; border: 1px solid black;\">2</td>\n\t\t\t<td style=\"padding: 5px; border: 1px solid black;\">1</td>\n\t\t\t<td style=\"padding: 5px; border: 1px solid black;\">0</td>\n\t\t\t<td style=\"padding: 5px; border: 1px solid black;\">3</td>\n\t\t</tr>\n\t\t<tr>\n\t\t\t<td style=\"padding: 5px; border: 1px solid black;\">3</td>\n\t\t\t<td style=\"padding: 5px; border: 1px solid black;\">0</td>\n\t\t\t<td style=\"padding: 5px; border: 1px solid black;\">2</td>\n\t\t\t<td style=\"padding: 5px; border: 1px solid black;\">5</td>\n\t\t</tr>\n\t\t<tr>\n\t\t\t<td style=\"padding: 5px; border: 1px solid black;\">4</td>\n\t\t\t<td style=\"padding: 5px; border: 1px solid black;\">2</td>\n\t\t\t<td style=\"padding: 5px; border: 1px solid black;\">1</td>\n\t\t\t<td style=\"padding: 5px; border: 1px solid black;\">6</td>\n\t\t</tr>\n\t</tbody>\n</table>\n\n<p>&nbsp;</p>\n\n<pre>\n<b>输入:</b>receiver = [2,0,1], k = 4\n<b>输出:</b>6\n<b>解释:</b>上表展示了从编号为 x = 2 开始的游戏过程。\n从表中可知f(2) 等于 6 。\n6 是能得到最大的函数值。\n所以输出为 6 。\n</pre>\n\n<p><strong class=\"example\">示例 2</strong></p>\n\n<table border=\"1\" cellspacing=\"3\" style=\"border-collapse: separate; text-align: center;\">\n\t<tbody>\n\t\t<tr>\n\t\t\t<th style=\"padding: 5px; border: 1px solid black;\">传递次数</th>\n\t\t\t<th style=\"padding: 5px; border: 1px solid black;\">传球者编号</th>\n\t\t\t<th style=\"padding: 5px; border: 1px solid black;\">接球者编号</th>\n\t\t\t<th style=\"padding: 5px; border: 1px solid black;\">x + 所有接球者编号</th>\n\t\t</tr>\n\t\t<tr>\n\t\t\t<td style=\"padding: 5px; border: 1px solid black;\">&nbsp;</td>\n\t\t\t<td style=\"padding: 5px; border: 1px solid black;\">&nbsp;</td>\n\t\t\t<td style=\"padding: 5px; border: 1px solid black;\">&nbsp;</td>\n\t\t\t<td style=\"padding: 5px; border: 1px solid black;\">4</td>\n\t\t</tr>\n\t\t<tr>\n\t\t\t<td style=\"padding: 5px; border: 1px solid black;\">1</td>\n\t\t\t<td style=\"padding: 5px; border: 1px solid black;\">4</td>\n\t\t\t<td style=\"padding: 5px; border: 1px solid black;\">3</td>\n\t\t\t<td style=\"padding: 5px; border: 1px solid black;\">7</td>\n\t\t</tr>\n\t\t<tr>\n\t\t\t<td style=\"padding: 5px; border: 1px solid black;\">2</td>\n\t\t\t<td style=\"padding: 5px; border: 1px solid black;\">3</td>\n\t\t\t<td style=\"padding: 5px; border: 1px solid black;\">2</td>\n\t\t\t<td style=\"padding: 5px; border: 1px solid black;\">9</td>\n\t\t</tr>\n\t\t<tr>\n\t\t\t<td style=\"padding: 5px; border: 1px solid black;\">3</td>\n\t\t\t<td style=\"padding: 5px; border: 1px solid black;\">2</td>\n\t\t\t<td style=\"padding: 5px; border: 1px solid black;\">1</td>\n\t\t\t<td style=\"padding: 5px; border: 1px solid black;\">10</td>\n\t\t</tr>\n\t</tbody>\n</table>\n\n<p>&nbsp;</p>\n\n<pre>\n<b>输入:</b>receiver = [1,1,1,2,3], k = 3\n<b>输出:</b>10\n<b>解释:</b>上表展示了从编号为 x = 4 开始的游戏过程。\n从表中可知f(4) 等于 10 。\n10 是能得到最大的函数值。\n所以输出为 10 。\n</pre>\n\n<p>&nbsp;</p>\n\n<p><strong>提示:</strong></p>\n\n<ul>\n\t<li><code>1 &lt;= receiver.length == n &lt;= 10<sup>5</sup></code></li>\n\t<li><code>0 &lt;= receiver[i] &lt;= n - 1</code></li>\n\t<li><code>1 &lt;= k &lt;= 10<sup>10</sup></code></li>\n</ul>\n",
"isPaidOnly": false,
"difficulty": "Hard",
"likes": 30,
"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": "Bit Manipulation",
"slug": "bit-manipulation",
"translatedName": "位运算",
"__typename": "TopicTagNode"
},
{
"name": "Array",
"slug": "array",
"translatedName": "数组",
"__typename": "TopicTagNode"
},
{
"name": "Dynamic Programming",
"slug": "dynamic-programming",
"translatedName": "动态规划",
"__typename": "TopicTagNode"
}
],
"companyTagStats": null,
"codeSnippets": [
{
"lang": "C++",
"langSlug": "cpp",
"code": "class Solution {\npublic:\n long long getMaxFunctionValue(vector<int>& receiver, long long k) {\n \n }\n};",
"__typename": "CodeSnippetNode"
},
{
"lang": "Java",
"langSlug": "java",
"code": "class Solution {\n public long getMaxFunctionValue(List<Integer> receiver, long k) {\n\n }\n}",
"__typename": "CodeSnippetNode"
},
{
"lang": "Python",
"langSlug": "python",
"code": "class Solution(object):\n def getMaxFunctionValue(self, receiver, k):\n \"\"\"\n :type receiver: List[int]\n :type k: int\n :rtype: int\n \"\"\"",
"__typename": "CodeSnippetNode"
},
{
"lang": "Python3",
"langSlug": "python3",
"code": "class Solution:\n def getMaxFunctionValue(self, receiver: List[int], k: int) -> int:",
"__typename": "CodeSnippetNode"
},
{
"lang": "C",
"langSlug": "c",
"code": "long long getMaxFunctionValue(int* receiver, int receiverSize, long long k){\n\n}",
"__typename": "CodeSnippetNode"
},
{
"lang": "C#",
"langSlug": "csharp",
"code": "public class Solution {\n public long GetMaxFunctionValue(IList<int> receiver, long k) {\n\n }\n}",
"__typename": "CodeSnippetNode"
},
{
"lang": "JavaScript",
"langSlug": "javascript",
"code": "/**\n * @param {number[]} receiver\n * @param {number} k\n * @return {number}\n */\nvar getMaxFunctionValue = function(receiver, k) {\n\n};",
"__typename": "CodeSnippetNode"
},
{
"lang": "TypeScript",
"langSlug": "typescript",
"code": "function getMaxFunctionValue(receiver: number[], k: number): number {\n\n};",
"__typename": "CodeSnippetNode"
},
{
"lang": "PHP",
"langSlug": "php",
"code": "class Solution {\n\n /**\n * @param Integer[] $receiver\n * @param Integer $k\n * @return Integer\n */\n function getMaxFunctionValue($receiver, $k) {\n\n }\n}",
"__typename": "CodeSnippetNode"
},
{
"lang": "Swift",
"langSlug": "swift",
"code": "class Solution {\n func getMaxFunctionValue(_ receiver: [Int], _ k: Int) -> Int {\n\n }\n}",
"__typename": "CodeSnippetNode"
},
{
"lang": "Kotlin",
"langSlug": "kotlin",
"code": "class Solution {\n fun getMaxFunctionValue(receiver: List<Int>, k: Long): Long {\n\n }\n}",
"__typename": "CodeSnippetNode"
},
{
"lang": "Dart",
"langSlug": "dart",
"code": "class Solution {\n int getMaxFunctionValue(List<int> receiver, int k) {\n\n }\n}",
"__typename": "CodeSnippetNode"
},
{
"lang": "Go",
"langSlug": "golang",
"code": "func getMaxFunctionValue(receiver []int, k int64) int64 {\n\n}",
"__typename": "CodeSnippetNode"
},
{
"lang": "Ruby",
"langSlug": "ruby",
"code": "# @param {Integer[]} receiver\n# @param {Integer} k\n# @return {Integer}\ndef get_max_function_value(receiver, k)\n\nend",
"__typename": "CodeSnippetNode"
},
{
"lang": "Scala",
"langSlug": "scala",
"code": "object Solution {\n def getMaxFunctionValue(receiver: List[Int], k: Long): Long = {\n\n }\n}",
"__typename": "CodeSnippetNode"
},
{
"lang": "Rust",
"langSlug": "rust",
"code": "impl Solution {\n pub fn get_max_function_value(receiver: Vec<i32>, k: i64) -> i64 {\n\n }\n}",
"__typename": "CodeSnippetNode"
},
{
"lang": "Racket",
"langSlug": "racket",
"code": "(define/contract (get-max-function-value receiver k)\n (-> (listof exact-integer?) exact-integer? exact-integer?)\n\n )",
"__typename": "CodeSnippetNode"
},
{
"lang": "Erlang",
"langSlug": "erlang",
"code": "-spec get_max_function_value(Receiver :: [integer()], K :: integer()) -> integer().\nget_max_function_value(Receiver, K) ->\n .",
"__typename": "CodeSnippetNode"
},
{
"lang": "Elixir",
"langSlug": "elixir",
"code": "defmodule Solution do\n @spec get_max_function_value(receiver :: [integer], k :: integer) :: integer\n def get_max_function_value(receiver, k) do\n\n end\nend",
"__typename": "CodeSnippetNode"
}
],
"stats": "{\"totalAccepted\": \"2.4K\", \"totalSubmission\": \"6.1K\", \"totalAcceptedRaw\": 2384, \"totalSubmissionRaw\": 6126, \"acRate\": \"38.9%\"}",
"hints": [
"<div class=\"_1l1MA\">We can solve the problem using binary lifting.</div>",
"<div class=\"_1l1MA\">For each player with id <code>x</code> and for every <code>i</code> in the range <code>[0, ceil(log<sub>2</sub>k)]</code>, we can determine the last receiver's id and compute the sum of player ids who receive the ball after <code>2<sup>i</sup></code> passes, starting from <code>x</code>.</div>",
"<div class=\"_1l1MA\">Let <code>last_receiver[x][i] =</code> the last receiver's id after <code>2<sup>i</sup></code> passes, and <code>sum[x][i] =</code> the sum of player ids who receive the ball after <code>2<sup>i</sup></code> passes. For all <code>x</code> in the range <code>[0, n - 1]</code>, <code>last_receiver[x][0] = receiver[x]</code>, and <code>sum[x][0] = receiver[x]</code>.</div>",
"<div class=\"_1l1MA\">Then for <code>i</code> in range <code>[1, ceil(log<sub>2</sub>k)]</code>, <code>last_receiver[x][i] = last_receiver[last_receiver[x][i - 1]][i - 1]</code> and <code>sum[x][i] = sum[x][i - 1] + sum[last_receiver[x][i - 1]][i - 1]</code>, for all <code>x</code> in the range <code>[0, n - 1]</code>.</div>",
"<div class=\"_1l1MA\">Starting from each player id <code>x</code>, we can now go through the powers of <code>2</code> in the binary representation of <code>k</code> and make jumps corresponding to each power, using the pre-computed values, to compute <code>f(x)</code>.</div>",
"<div class=\"_1l1MA\">The answer is the maximum <code>f(x)</code> from each player id.</div>"
],
"solution": null,
"status": null,
"sampleTestCase": "[2,0,1]\n4",
"metaData": "{\n \"name\": \"getMaxFunctionValue\",\n \"params\": [\n {\n \"name\": \"receiver\",\n \"type\": \"list<integer>\"\n },\n {\n \"type\": \"long\",\n \"name\": \"k\"\n }\n ],\n \"return\": {\n \"type\": \"long\"\n }\n}",
"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": null,
"isSubscribed": false,
"isDailyQuestion": false,
"dailyRecordStatus": null,
"editorType": "CKEDITOR",
"ugcQuestionId": null,
"style": "LEETCODE",
"exampleTestcases": "[2,0,1]\n4\n[1,1,1,2,3]\n3",
"__typename": "QuestionNode"
}
}
}