2022-03-27 20:38:29 +08:00
{
"data" : {
"question" : {
"questionId" : "1000264" ,
2023-12-09 18:42:21 +08:00
"questionFrontendId" : "LCR 028" ,
"categoryTitle" : "Algorithms" ,
2022-03-27 20:38:29 +08:00
"boundTopicId" : 910217 ,
2023-12-09 18:42:21 +08:00
"title" : "扁平化多级双向链表" ,
2022-03-27 20:38:29 +08:00
"titleSlug" : "Qv1Da2" ,
"content" : "<p>English description is not available for the problem. Please switch to Chinese.</p>\n" ,
2023-12-09 18:42:21 +08:00
"translatedTitle" : "扁平化多级双向链表" ,
2022-03-27 20:38:29 +08:00
"translatedContent" : "<p>多级双向链表中,除了指向下一个节点和前一个节点指针之外,它还有一个子链表指针,可能指向单独的双向链表。这些子列表也可能会有一个或多个自己的子项,依此类推,生成多级数据结构,如下面的示例所示。</p>\n\n<p>给定位于列表第一级的头节点,请扁平化列表,即将这样的多级双向链表展平成普通的双向链表,使所有结点出现在单级双链表中。</p>\n\n<p> </p>\n\n<p><strong>示例 1: </strong></p>\n\n<pre>\n<strong>输入:</strong>head = [1,2,3,4,5,6,null,null,null,7,8,9,10,null,null,11,12]\n<strong>输出:</strong>[1,2,3,7,8,11,12,9,10,4,5,6]\n<strong>解释:\n</strong>\n输入的多级列表如下图所示: \n\n<img src=\"https://assets.leetcode-cn.com/aliyun-lc-upload/uploads/2018/10/12/multilevellinkedlist.png\" style=\"height: 363px; width: 640px;\" />\n\n扁平化后的链表如下图: \n\n<img src=\"https://assets.leetcode-cn.com/aliyun-lc-upload/uploads/2018/10/12/multilevellinkedlistflattened.png\" style=\"height: 80px; width: 1100px;\" />\n</pre>\n\n<p><strong>示例 2: </strong></p>\n\n<pre>\n<strong>输入:</strong>head = [1,2,null,3]\n<strong>输出:</strong>[1,3,2]\n<strong>解释:\n\n</strong>输入的多级列表如下图所示:\n\n 1---2---NULL\n |\n 3---NULL\n</pre>\n\n<p><strong>示例 3: </strong></p>\n\n<pre>\n<strong>输入:</strong>head = []\n<strong>输出:</strong>[]\n</pre>\n\n<p> </p>\n\n<p><strong>如何表示测试用例中的多级链表?</strong></p>\n\n<p>以 <strong>示例 1</strong> 为例:</p>\n\n<pre>\n 1---2---3---4---5---6--NULL\n |\n 7---8---9---10--NULL\n |\n 11--12--NULL</pre>\n\n<p>序列化其中的每一级之后:</p>\n\n<pre>\n[1,2,3,4,5,6,null]\n[7,8,9,10,null]\n[11,12,null]\n</pre>\n\n<p>为了将每一级都序列化到一起,我们需要每一级中添加值为 null 的元素,以表示没有节点连接到上一级的上级节点。</p>\n\n<pre>\n[1,2,3,4,5,6,null]\n[null,null,7,8,9,10,null]\n[null,11,12,null]\n</pre>\n\n<p>合并所有序列化结果,并去除末尾的 null 。</p>\n\n<pre>\n[1,2,3,4,5,6,null,null,null,7,8,9,10,null,null,11,12]</pre>\n\n<p> </p>\n\n<p><strong>提示:</strong></p>\n\n<ul>\n\t<li>节点数目不超过 <code>1000</code></li>\n\t<li><code>1 <= Node.val <= 10^5</code></li>\n</ul>\n\n<p> </p>\n\n<p><meta charset=\"UTF-8\" />注意:本题与主站 430 题相同: <a href=\"https://leetcode-cn.com/problems/flatten-a-multilevel-doubly-linked-list/\">https://leetcode-cn.com/problems/flatten-a-multilevel-doubly-linked-list/</a></p>\n" ,
"isPaidOnly" : false ,
"difficulty" : "Medium" ,
2023-12-09 18:42:21 +08:00
"likes" : 81 ,
2022-03-27 20:38:29 +08:00
"dislikes" : 0 ,
"isLiked" : null ,
"similarQuestions" : "[]" ,
"contributors" : [
{
"username" : "LeetCode" ,
"profileUrl" : "/u/leetcode" ,
2023-12-09 18:42:21 +08:00
"avatarUrl" : "https://assets.leetcode.cn/aliyun-lc-upload/uploaded_files/2021/03/73c9f099-abbe-4d94-853f-f8abffd459cd/leetcode.png" ,
2022-03-27 20:38:29 +08:00
"__typename" : "ContributorNode"
}
] ,
2023-12-09 18:42:21 +08:00
"langToValidPlayground" : "{\"cpp\": true, \"java\": true, \"python\": true, \"python3\": true, \"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}" ,
2022-03-27 20:38:29 +08:00
"topicTags" : [
{
"name" : "Depth-First Search" ,
"slug" : "depth-first-search" ,
"translatedName" : "深度优先搜索" ,
"__typename" : "TopicTagNode"
} ,
{
"name" : "Linked List" ,
"slug" : "linked-list" ,
"translatedName" : "链表" ,
"__typename" : "TopicTagNode"
} ,
{
"name" : "Doubly-Linked List" ,
"slug" : "doubly-linked-list" ,
"translatedName" : "双向链表" ,
"__typename" : "TopicTagNode"
}
] ,
"companyTagStats" : null ,
"codeSnippets" : [
{
"lang" : "C++" ,
"langSlug" : "cpp" ,
"code" : "/*\n// Definition for a Node.\nclass Node {\npublic:\n int val;\n Node* prev;\n Node* next;\n Node* child;\n};\n*/\n\nclass Solution {\npublic:\n Node* flatten(Node* head) {\n \n }\n};" ,
"__typename" : "CodeSnippetNode"
} ,
{
"lang" : "Java" ,
"langSlug" : "java" ,
"code" : "/*\n// Definition for a Node.\nclass Node {\n public int val;\n public Node prev;\n public Node next;\n public Node child;\n};\n*/\n\nclass Solution {\n public Node flatten(Node head) {\n \n }\n}" ,
"__typename" : "CodeSnippetNode"
} ,
{
"lang" : "Python" ,
"langSlug" : "python" ,
"code" : "\"\"\"\n# Definition for a Node.\nclass Node(object):\n def __init__(self, val, prev, next, child):\n self.val = val\n self.prev = prev\n self.next = next\n self.child = child\n\"\"\"\n\nclass Solution(object):\n def flatten(self, head):\n \"\"\"\n :type head: Node\n :rtype: Node\n \"\"\"\n " ,
"__typename" : "CodeSnippetNode"
} ,
{
"lang" : "Python3" ,
"langSlug" : "python3" ,
"code" : "\"\"\"\n# Definition for a Node.\nclass Node:\n def __init__(self, val, prev, next, child):\n self.val = val\n self.prev = prev\n self.next = next\n self.child = child\n\"\"\"\n\nclass Solution:\n def flatten(self, head: 'Node') -> 'Node':\n " ,
"__typename" : "CodeSnippetNode"
} ,
{
"lang" : "C#" ,
"langSlug" : "csharp" ,
"code" : "/*\n// Definition for a Node.\npublic class Node {\n public int val;\n public Node prev;\n public Node next;\n public Node child;\n}\n*/\n\npublic class Solution {\n public Node Flatten(Node head) {\n \n }\n}" ,
"__typename" : "CodeSnippetNode"
} ,
{
"lang" : "JavaScript" ,
"langSlug" : "javascript" ,
"code" : "/**\n * // Definition for a Node.\n * function Node(val,prev,next,child) {\n * this.val = val;\n * this.prev = prev;\n * this.next = next;\n * this.child = child;\n * };\n */\n\n/**\n * @param {Node} head\n * @return {Node}\n */\nvar flatten = function(head) {\n \n};" ,
"__typename" : "CodeSnippetNode"
} ,
{
2023-12-09 18:42:21 +08:00
"lang" : "TypeScript" ,
"langSlug" : "typescript" ,
"code" : "/**\n * Definition for node.\n * class Node {\n * val: number\n * prev: Node | null\n * next: Node | null\n * child: Node | null\n * constructor(val?: number, prev? : Node, next? : Node, child? : Node) {\n * this.val = (val===undefined ? 0 : val);\n * this.prev = (prev===undefined ? null : prev);\n * this.next = (next===undefined ? null : next);\n * this.child = (child===undefined ? null : child);\n * }\n * }\n */\n\nfunction flatten(head: Node | null): Node | null {\n\n};" ,
2022-03-27 20:38:29 +08:00
"__typename" : "CodeSnippetNode"
} ,
{
2023-12-09 18:42:21 +08:00
"lang" : "PHP" ,
"langSlug" : "php" ,
"code" : "/**\n * Definition for a Node.\n * class Node {\n * public $val = null;\n * public $prev = null;\n * public $next = null;\n * public $child = null;\n * function __construct($val = 0) {\n * $this->val = $val;\n * $this->prev = null;\n * $this->next = null;\n * $this->child = null;\n * }\n * }\n */\n\nclass Solution {\n /**\n * @param Node $head\n * @return Node\n */\n function flatten($head) {\n \n }\n}" ,
2022-03-27 20:38:29 +08:00
"__typename" : "CodeSnippetNode"
} ,
{
2023-12-09 18:42:21 +08:00
"lang" : "Swift" ,
"langSlug" : "swift" ,
"code" : "/**\n * Definition for a Node.\n * public class Node {\n * public var val: Int\n * public var prev: Node?\n * public var next: Node?\n * public var child: Node?\n * public init(_ val: Int) {\n * self.val = val\n * self.prev = nil\n * self.next = nil\n * self.child = nil\n * }\n * }\n */\n\nclass Solution {\n func flatten(_ head: Node?) -> Node? {\n \n }\n}" ,
2022-03-27 20:38:29 +08:00
"__typename" : "CodeSnippetNode"
} ,
{
"lang" : "Kotlin" ,
"langSlug" : "kotlin" ,
"code" : "/**\n * Definition for a Node.\n * class Node(var `val`: Int) {\n * var prev: Node? = null\n * var next: Node? = null\n * var child: Node? = null\n * }\n */\n\nclass Solution {\n fun flatten(root: Node?): Node? {\n \n }\n}" ,
"__typename" : "CodeSnippetNode"
} ,
{
2023-12-09 18:42:21 +08:00
"lang" : "Go" ,
"langSlug" : "golang" ,
"code" : "/**\n * Definition for a Node.\n * type Node struct {\n * Val int\n * Prev *Node\n * Next *Node\n * Child *Node\n * }\n */\n\nfunc flatten(root *Node) *Node {\n \n}" ,
2022-03-27 20:38:29 +08:00
"__typename" : "CodeSnippetNode"
} ,
{
2023-12-09 18:42:21 +08:00
"lang" : "Ruby" ,
"langSlug" : "ruby" ,
"code" : "# Definition for a Node.\n# class Node\n# attr_accessor :val, :prev, :next, :child\n# def initialize(val=nil, prev=nil, next_=nil, child=nil)\n# @val = val\n# @prev = prev\n# @next = next_\n# @child = child\n# end\n# end\n\n# @param {Node} root\n# @return {Node}\ndef flatten(root)\n \nend" ,
"__typename" : "CodeSnippetNode"
} ,
{
"lang" : "Scala" ,
"langSlug" : "scala" ,
"code" : "/**\n * Definition for a Node.\n * class Node(var _value: Int) {\n * var value: Int = _value\n * var prev: Node = null\n * var next: Node = null\n * var child: Node = null\n * }\n */\n\nobject Solution {\n def flatten(head: Node): Node = {\n \t\n }\n}" ,
2022-03-27 20:38:29 +08:00
"__typename" : "CodeSnippetNode"
}
] ,
2023-12-09 19:57:46 +08:00
"stats" : "{\"totalAccepted\": \"27.7K\", \"totalSubmission\": \"46.1K\", \"totalAcceptedRaw\": 27708, \"totalSubmissionRaw\": 46057, \"acRate\": \"60.2%\"}" ,
2022-03-27 20:38:29 +08:00
"hints" : [ ] ,
"solution" : null ,
"status" : null ,
"sampleTestCase" : "[1,2,3,4,5,6,null,null,null,7,8,9,10,null,null,11,12]" ,
"metaData" : "{\"name\": \"flatten\", \"params\": [{\"name\": \"head\", \"type\": \"TreeNode\"}], \"return\": {\"type\": \"TreeNode\"}}" ,
"judgerAvailable" : true ,
"judgeType" : "large" ,
"mysqlSchemas" : [ ] ,
"enableRunCode" : true ,
2023-12-09 18:42:21 +08:00
"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>\"],\"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=\\\" _ b l a
"book" : null ,
2022-03-27 20:38:29 +08:00
"isSubscribed" : false ,
"isDailyQuestion" : false ,
"dailyRecordStatus" : null ,
"editorType" : "CKEDITOR" ,
"ugcQuestionId" : null ,
"style" : "LEETCODE" ,
"exampleTestcases" : "[1,2,3,4,5,6,null,null,null,7,8,9,10,null,null,11,12]\n[1,2,null,3]\n[]" ,
"__typename" : "QuestionNode"
}
}
}