題目:sort a linked list in o(
nlog
n) time using constant space complexity.
因為題目要求複雜度為o(nlogn),故可以考慮歸併排序的思想。
歸併排序的一般步驟為:
1)將待排序陣列(鍊錶)取中點並一分為二;
2)遞迴地對左半部分進行歸併排序;
3)遞迴地對右半部分進行歸併排序;
4)將兩個半部分進行合併(merge),得到結果。
實現:* definition for singly-linked list.
* struct listnode
* };
class solution
else
}listnode * headb = slow->next;
slow->next = null;
return mergelist(sortlist(head), sortlist(headb));
}listnode* mergelist(listnode * list1, listnode* list2)
else
return phead;}};
Sort List (歸併排序鍊錶)
原文 解答一 歸併排序 遞迴法 題目要求時間空間複雜度分別為o nlogn o nlogn 和o 1 o 1 根據時間複雜度我們自然想到二分法,從而聯想到歸併排序 對陣列做歸併排序的空間複雜度為 o n o n 分別由新開闢陣列o n o n 和遞迴函式呼叫o logn o logn 組成,而根據鍊...
鍊錶排序(sort list)
1 要求 sort a linked list in o n log n time using constant space complexity.2 思路 因為題目要求複雜度為o nlogn 故可以考慮歸併排序的思想。歸併排序的一般步驟為 1 將待排序陣列 鍊錶 取中點並一分為二 2 遞迴地對左半...
148 Sort List (歸併實現鍊錶排序)
sort a linked list in o n log n time using constant space complexity.常見排序方法有很多,插入排序,選擇排序,堆排序,快速排序,氣泡排序,歸併排序,桶排序等等。它們的時間複雜度不盡相同,而這裡題目限定了時間必須為o nlgn 符合要...