leetcode 브러시 제목 노트 (python3) - 148 정렬 목록.

148 정렬 목록

정렬 O의 링크 된리스트는 일정한 공간 복잡도를 이용하여 시간 (N 로그 n).

예 1 :

입력 : 4-> 2-> 1-> 3
출력 : 1-> 2-> 3-> 4
실시 예 2 :

입력 : -1-> 5-> 3-> 4 -> 0
출력 : -1-> 0-> 3-> 4 -> 5

문제 해결 아이디어

func sortList(head *ListNode) *ListNode {
	if head == nil || head.Next== nil {
		return head
	}

	fast, slow := head.Next, head
	for fast != nil && fast.Next != nil {
		fast = fast.Next.Next
		slow = slow.Next
	}
    fmt.Println("hello")
	mid := slow.Next
	slow.Next = nil
	return merge(sortList(head), sortList(mid))
}

func merge(l1 *ListNode, l2 *ListNode) *ListNode {
	dummy := ListNode{Val: 0}
	curr := &dummy
	for l1 != nil && l2 != nil {
		if l1.Val < l2.Val {
			curr.Next = l1
			l1 = l1.Next
		} else {
			curr.Next = l2
			l2 = l2.Next
		}
		curr = curr.Next
	}
	if l1 != nil {
		curr.Next = l1
	}
	if l2 != nil {
		curr.Next = l2
	}
	return dummy.Next
}
게시 98 개 원래 기사 · 원의 칭찬 0 · 조회수 1449

추천

출처blog.csdn.net/weixin_44555304/article/details/104427489