鍊錶 排序鍊錶

2021-10-05 22:41:38 字數 1261 閱讀 5251

樂扣原題:

/**

* definition for singly-linked list.

* public class listnode 

* }*/class solution 

// 將鍊錶轉化為陣列

listlist = new arraylist<>();

while (null != head) 

// 陣列遞增排序

collections.sort(list);

// 構造結果鍊錶

listnode root = new listnode(-1);

listnode cur = root;

for (integer val : list) 

return root.next;

}}

/**

* definition for singly-linked list.

* public class listnode

* }*/class solution

return split(head);

}private listnode split(listnode node)

// 通過快慢指標,標記鍊錶的中間節點

listnode slow = node;

listnode fast = node.next;

while (null != fast && null != fast.next)

// 以中間節點將鍊錶一分為二,通過slow.next = null斷鏈

listnode pre = node;

listnode post = slow.next;

slow.next = null;

// 遞迴分解兩段鍊錶,直至不可再分(null/單節點)

listnode left = split(pre);

listnode right = split(post);

// 返回兩兩歸併結果

return merge(left, right);

}private listnode merge(listnode left, listnode right) else

cur = cur.next;

}if (null != left)

if (null != right)

return subresult.next;

}}

鍊錶 鍊錶排序 中等

描述 在 o n log n 時間複雜度和常數級的空間複雜度下給鍊錶排序。您在真實的面試中是否遇到過這個題?樣例給出 1 3 2 null,給它排序變成 1 2 3 null.挑戰分別用歸併排序和快速排序做一遍。題目鏈結 分析快速排序 演算法只交換節點的val值,平均時間複雜度o nlogn 不考慮...

鍊錶之排序鍊錶

148.排序鍊錶 力扣 leetcode leetcode cn.com 題目要求n logn 所以這邊考慮歸併排序 先分,再合,合的話就是合併兩個有序鍊錶,和合併兩個有序陣列一樣簡單 class solution listnode merge listnode l1,listnode l2 ptr...

python鍊錶 鍊錶重新排序

輸入 1 2 3 4 5 6 7 輸出 1 7 2 6 3 5 4 或者輸入 1 2 3 4 5 6 輸出 1 6 2 5 3 4 思路 1.將1 2 3 4 5 6 7分成 1 2 3 與 4 5 6 7,將後半部分逆序7 6 5 4 2.合併1 2 3與7 6 5 4 為1 7 2 6 3 5 ...