每日一题---23. 合并K个升序链表[力扣][Go]

简介: 每日一题---23. 合并K个升序链表[力扣][Go]

题目描述

给你一个链表数组,每个链表都已经按升序排列。

请你将所有链表合并到一个升序链表中,返回合并后的链表。

解题代码

困难题第一次一遍过,但是用了递归还有for循环,就导致时间和空间复杂度都比较高。

func mergeKLists(lists []*ListNode) *ListNode {
  if len(lists) == 0 {
    return nil
  }
  if len(lists) == 1 {
    return lists[0]
  }
  lists = mergeKListsStep(lists)
  return mergeKLists(lists)
}
func mergeKListsStep(lists []*ListNode) []*ListNode {
  var list = &ListNode{Val: 0,Next: nil}
  p := list
  one := lists[0]
  two := lists[1]
  for one != nil && two != nil {
    if one.Val < two.Val {
      tem := one
      list.Next = tem
      list = list.Next
      one = one.Next
    } else {
      tem := two
      list.Next = tem
      list = list.Next
      two = two.Next
    }
  }
  if one == nil {
    list.Next = two
  }
  if two == nil {
    list.Next = one
  }
  lists = lists[2:]
  lists = append(lists, p.Next)
  return lists
}

提交结果


相关文章
|
1月前
【力扣】-- 移除链表元素
【力扣】-- 移除链表元素
35 1
|
1月前
|
算法
【❤️算法笔记❤️】-每日一刷-23、合并 K 个升序链表
【❤️算法笔记❤️】-每日一刷-23、合并 K 个升序链表
32 0
|
3月前
【bug记录】旋转链表与力扣报错:member access within null pointer of type ‘struct ListNode‘
【bug记录】旋转链表与力扣报错:member access within null pointer of type ‘struct ListNode‘
|
1月前
|
算法
【链表】算法题(二) ----- 力扣/牛客
【链表】算法题(二) ----- 力扣/牛客
|
1月前
|
索引
力扣(LeetCode)数据结构练习题(3)------链表
力扣(LeetCode)数据结构练习题(3)------链表
77 0
|
1月前
|
算法
【链表】算法题(一) ----- 力扣 / 牛客
【链表】算法题(一) ----- 力扣 / 牛客
|
3月前
|
算法
LeetCode第23题合并 K 个升序链表
这篇文章介绍了LeetCode第23题"合并K个升序链表"的解题方法,使用分而治之的思想,通过递归合并链表的方式解决了这个难题。
LeetCode第23题合并 K 个升序链表
|
3月前
|
存储 Python
【Leetcode刷题Python】23. 合并K个升序链表
合并K个升序链表的方法:使用数组排序的暴力求解法、使用小顶堆的高效方法,以及分而治之的策略,并提供了相应的Python实现代码。
19 1
|
3月前
|
存储 算法 Python
【面试题】合井K个升序链表
【面试题】合井K个升序链表
35 0
|
4月前
|
Java
力扣经典150题第六十题:反转链表 II
力扣经典150题第六十题:反转链表 II
27 1