From 8f38b64f30444c28fc2b8ed2fac4a7b650a7528a Mon Sep 17 00:00:00 2001 From: weibin Date: Mon, 24 Jul 2023 22:59:03 +0800 Subject: [PATCH] update leetcode --- book.leetcode/docs/hard/23.md | 96 +++++++++++++++++++++++++++++++++++ 1 file changed, 96 insertions(+) create mode 100644 book.leetcode/docs/hard/23.md diff --git a/book.leetcode/docs/hard/23.md b/book.leetcode/docs/hard/23.md new file mode 100644 index 00000000..f18ebd9c --- /dev/null +++ b/book.leetcode/docs/hard/23.md @@ -0,0 +1,96 @@ +--- +weight: 23 + +bookFlatSection: true + +BookToC: true + +title: "23. 合并 K 个升序链表" +--- + +# 23. 合并 K 个升序链表 + +## 题目地址 + ++ [力扣](https://leetcode.cn/problems/merge-k-sorted-lists/) ++ [LeetCode](https://leetcode.com/problems/merge-k-sorted-lists/) + +## 解题思路 + +## 具体实现 + +{{< tabs "uniqueid" >}} + +{{< tab "Go" >}} + +```go +package main + +import ( + "fmt" +) + +type ListNode struct { + Val int + Next *ListNode +} + +func mergeKLists(lists []*ListNode) *ListNode { + if len(lists) == 0 { + return nil + } + n := len(lists) + return merge(lists, 0, n-1) +} + +func merge(lists []*ListNode, left, right int) *ListNode { + if left == right { + return lists[left] + } + mid := left + (right-left)/2 + l1 := merge(lists, left, mid) + l2 := merge(lists, mid+1, right) + return mergeTwoLists(l1, l2) +} + +func mergeTwoLists(l1 *ListNode, l2 *ListNode) *ListNode { + if l1 == nil { + return l2 + } + if l2 == nil { + return l1 + } + if l1.Val < l2.Val { + l1.Next = mergeTwoLists(l1.Next, l2) + return l1 + } else { + l2.Next = mergeTwoLists(l1, l2.Next) + return l2 + } +} + +func main() { + list1 := &ListNode{Val: 1, Next: &ListNode{Val: 4, Next: &ListNode{Val: 5}}} + list2 := &ListNode{Val: 1, Next: &ListNode{Val: 3, Next: &ListNode{Val: 4}}} + list3 := &ListNode{Val: 2, Next: &ListNode{Val: 6}} + + lists := []*ListNode{list1, list2, list3} + + result := mergeKLists(lists) + + for result != nil { + fmt.Printf("%d ", result.Val) + result = result.Next + } +} + +``` + +{{< /tab >}} + +{{< /tabs >}} + +## 参考 + ++ [合并K个升序链表-解题思路](https://www.bilibili.com/video/BV1QK4y1N7ww) +