/**
* Definition for singly-linked list.
* type ListNode struct {
* Val int
* Next *ListNode
* }
*/
func mergeKLists(lists []*ListNode) *ListNode {
if len(lists) == 0 {
return nil
}
if len(lists) == 1 {
return lists[0]
}
num := len(lists) / 2
l1 := mergeKLists(lists[:num])
l2 := mergeKLists(lists[num:])
return mergeTwo(l1, l2)
}
//这里必须写mergerTwo这个函数,不能用mergerKlists([]*ListNode{l1,l2})
func mergeTwo(l1 *ListNode, l2*ListNode) *ListNode {
if l1 == nil {
return l2
}
if l2 == nil {
return l1
}
if l1.Val < l2.Val {
l1.Next = mergeTwo(l1.Next, l2)
return l1
}
l2.Next = mergeTwo(l1, l2.Next)
return l2
}
//使用分治的思想, 参考leetcode book代码
* Definition for singly-linked list.
* type ListNode struct {
* Val int
* Next *ListNode
* }
*/
func mergeKLists(lists []*ListNode) *ListNode {
if len(lists) == 0 {
return nil
}
if len(lists) == 1 {
return lists[0]
}
num := len(lists) / 2
l1 := mergeKLists(lists[:num])
l2 := mergeKLists(lists[num:])
return mergeTwo(l1, l2)
}
//这里必须写mergerTwo这个函数,不能用mergerKlists([]*ListNode{l1,l2})
func mergeTwo(l1 *ListNode, l2*ListNode) *ListNode {
if l1 == nil {
return l2
}
if l2 == nil {
return l1
}
if l1.Val < l2.Val {
l1.Next = mergeTwo(l1.Next, l2)
return l1
}
l2.Next = mergeTwo(l1, l2.Next)
return l2
}
//使用分治的思想, 参考leetcode book代码
2022-05-15
在牛客打卡5天,今天学习:刷题 5 道/代码提交 6 次
全部评论
相关推荐
俺不是程序猿ovo:扯毕设导师让回去做实验

点赞 评论 收藏
分享