問題はLeetcodeからです。LinkedListのメモリ制限を超えました
"リンクリストと値xを指定すると、xより小さいすべてのノードがx以上のノードより前に来るようにパーティションを分割します。 2つのパーティションのそれぞれのノードの元の相対順序を保持する必要があります"
私の質問は、なぜ "right.next = null"という行が必要なのかです。 LinkedListの最後にNULLを置かないと、なぜ "メモリ制限を超えたエラー"が出るのですか? ありがとうございます!
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個のノードを作成しています。ここでは、デバッガを使用することで、より良いことを説明するのに役立ちます。 –