Проблема с 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 количество узлов, которые у вас были. Именно здесь использование отладчика поможет объяснить, что вы делаете лучше. –