sort a linked list in o(n log n) time using constant space complexity.
用歸併排序: 其中只是建立了乙個prehead節點 占用空間o(1) 時間o(nlogn)
public class solution //常規合併排序思路
listnode mid = getmid(head);
listnode midnext = mid.next;
mid.next = null; //一定記得斷開head 左半部分的鍊錶尾部
return mergesort(sortlist(head), sortlist(midnext));
}private listnode getmid(listnode head)
listnode slow = head, quick = head;
while(quick.next != null && quick.next.next != null)
return slow;
}private listnode mergesort(listnode n1, listnode n2) else
cur = cur.next;
}cur.next = cur1 == null ? cur2 : cur1; //看哪個鍊錶不為空 繼續接上
return prehead.next;
}}
用快速排序:
public class solution
public static void quicksort(listnode head, listnode end)
}public static listnode partion(listnode head, listnode end)
fast = fast.next;
}int temp=head.val; //交換slow和最初基準值
head.val=slow.val;
slow.val=temp;
return slow;
}}
LeetCode 鍊錶專題
返回兩個鍊錶相交的節點 class solution object def getintersectionnode self,heada,headb type head1,head1 listnode rtype listnode if not heada and not headb return ...
Leetcode鍊錶專題
給出兩個 非空 的鍊錶用來表示兩個非負的整數。其中,它們各自的位數是按照 逆序 的方式儲存的,並且它們的每個節點只能儲存 一位 數字。如果,我們將這兩個數相加起來,則會返回乙個新的鍊錶來表示它們的和。您可以假設除了數字 0 之外,這兩個數都不會以 0 開頭。示例 輸入 2 4 3 5 6 4 輸出 ...
鍊錶專題 4 鍊錶
鍊錶是一大堆節點合起來連起來組成的表的總稱。其中每個節點中都有指標變數指向列表中的下乙個節點。鍊錶中第乙個節點被稱之為表頭 head 所以將第乙個節點的指標變數命名為head。最後乙個節點並沒有神馬特殊的名字,但是它 最後乙個節點 有一項特殊的屬性 最後乙個節點將null作為最後乙個變數的值 所以檢...