148[Medium]: Sort List

Part1:問題描述

Sort a linked list in O(n log n) time using constant space complexity.

Part2:解題思路

我看到他說時間複雜度爲O(nlogn)就想到所有的排序裏只有快排能達到這個標準,然後進一步想到#include<algorithm>裏有直接的排序函數可以調用。用連續空間就想到了數組,但是由於不知道有多少元素,就用變長數組vector。所以我就是先把鏈表裏的元素拿到vector裏排個序,再將排完的數據插回到鏈表中。

感覺,這道題可能希望我們自己實現一個快排吧,由於我想睡覺就先這樣吧,之後再繼續補充。

其實對鏈表排序,直接改指針也是很好的,各種複雜度都很低,以後再更吧。先匿了生氣

Part3:代碼

ListNode* sortList(ListNode* head) {
	vector<int> num;
	if (head == NULL) return head;
	ListNode* current;
	current = head;
	while (current != NULL) {
		num.push_back(current->val);
		current = current->next;
	}
	sort(num.begin(), num.end());
	current = head;
	int index = 0;
	while(current != NULL) {
		current->val = num[index++];
		current = current->next;
	}
	return head;
}


發佈了29 篇原創文章 · 獲贊 0 · 訪問量 2322
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章