148 排序鍊錶(歸併排序,遞迴實現)

2021-10-10 17:19:36 字數 978 閱讀 8950

/**

* 148. 排序鍊錶

* @author wsq

* @date 2020/11/21

給你鍊錶的頭結點 head ,請將其按 公升序 排列並返回 排序後的鍊錶 。

高階:你可以在 o(n log n) 時間複雜度和常數級空間複雜度下,對鍊錶進行排序嗎?

示例1:

輸入:head = [4,2,1,3]

輸出:[1,2,3,4]

*/package com.wsq.linkedllisk;

public

class

mergesortlist

private listnode sortlist

(listnode head, object tail)

if(head.next == tail)

// 採用快慢指標獲取鍊錶的中點,這個方式可以學一下,以後可以用到

listnode slow = head;

listnode fast = head;

while

(fast != tail)

} listnode mid = slow;

listnode leftlist =

sortlist

(head, mid)

; listnode rightlist =

sortlist

(mid, tail)

;return

merge

(leftlist, rightlist);}

private listnode merge

(listnode leftlist, listnode rightlist)

else

node = node.next;}if

(tmp1 != null)

else

return head.next;

}}

148 排序鍊錶 歸併排序

難度 中等 題目描述 解題思路 148.排序鍊錶 2020 8 13 1對鍊錶進行歸併排序 1 快慢指標找中間節點 2 遞迴呼叫mergesort 3 合併有序鍊錶 public listnode sortlist listnode head public listnode listmergesor...

148 排序鍊錶 歸併排序 快速排序

在 o n log n 時間複雜度和常數級空間複雜度下,對鍊錶進行排序。輸入 4 2 1 3輸出 1 2 3 4 歸併排序法 利用快慢指標將鍊錶分為前後半段 先對slow.next找到後半段並進行排序 斷開鍊錶前後半段,對前半段進行排序 合併排序完成後的左右兩條鍊錶 function mergetw...

148 排序鍊錶 中等 鍊錶 歸併排序

給你鍊錶的頭結點head,請將其按 公升序 排列並返回 排序後的鍊錶 高階 你可以在o n log n 時間複雜度和常數級空間複雜度下,對鍊錶進行排序嗎?示例 1 輸入 head 4,2,1,3 輸出 1,2,3,4 示例 2 輸入 head 1,5,3,4,0 輸出 1,0,3,4,5 示例 3 ...