0
問題出自Leetcode。 「已超出LinkedList內存限制
」給定一個鏈表和一個值x,對它進行分區,使得所有小於x的節點在節點大於或等於x之前出現 您應該保留兩個分區中每個節點的原始相對順序「。
我的問題是,爲什麼我們必須有「right.next = null」這一行。爲什麼它會給出「內存限制超出錯誤」,如果我不把一個NULL放到LinkedList的末尾? 在此先感謝!
public ListNode partition (ListNode head, int x) {
if (head==null) return head;
ListNode leftDummy = new ListNode(0);
ListNode rightDummy = new ListNode(0);
ListNode left = leftDummy;
ListNode right = rightDummy;
while (head!=null) {
if (head.val < x) {
left.next = head;
left = head;
} else {
right.next = head;
right = head;
}
head = head.next;
}
// merge the two
right.next = null; // WHY THIS LINE??
left.next = rightDummy.next;
return leftDummy.next;
}
如果沒有像你這樣分區的原始列表,所以我的猜測是當你合併它們時,你正在創建N^2節點的數量。這是使用調試器可以幫助解釋你做得更好的地方。 –