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节点的数量。这是使用调试器可以帮助解释你做得更好的地方。 –