| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253 | package main/** * Definition for singly-linked list. * type ListNode struct { *     Val int *     Next *ListNode * } */func sortList(head *ListNode) *ListNode {	if head == nil || head.Next == nil {		return head	}	// !!Must split []int{1, 2} into 1 & 2	slow, fast := head, head.Next // So, fast = head.Next	for fast != nil && fast.Next != nil {		slow = slow.Next		fast = fast.Next.Next	}	left := head	right := slow.Next	slow.Next = nil // Unlink in the middle	left = sortList(left)	right = sortList(right)	return mergeList(left, right)}func mergeList(l1, l2 *ListNode) *ListNode {	dummy := &ListNode{}	prev := dummy	for l1 != nil && l2 != nil {		if l1.Val < l2.Val {			prev.Next = l1			l1 = l1.Next		} else {			prev.Next = l2			l2 = l2.Next		}		prev = prev.Next	}	if l1 != nil {		prev.Next = l1	} else {		prev.Next = l2	}	return dummy.Next}// func main() {// 	l1 := toLinkedList([]int{// 		2, 7, 4, 2, 8, 54, 3, 2})// 	printList(sortList(l1))// }
 |