2
1 -> 2 -> 3 -> 4 -> 5
のようなリンクリストがあります。私たちは1 -> 2
と3 -> 4 -> 5
を持っていると思いますm=2
ためので、最後に要素番目と番目m+1
からm
に最初の要素から、このリンクリストを分割したい、このような何か:LinkedListを分割する
private ListNode split(ListNode head, int m) {
ListNode h1 = new ListNode(0);
ListNode h2 = new ListNode(0);
h1.next = head;
h2.next = head; // same reference: error!
ListNode cur1 = h1;
ListNode cur2 = h2;
for (int i = 0; i < m; i++) {
cur1 = cur1.next;
}
cur1.next = null;
ListNode tmp = cur2.next;
for (int i = 0; i < m; i++) {
tmp = tmp.next;
}
cur2.next = tmp;
// doesn't matter which one to return
return h2.next;
}
私は同じ参照(head
)を私のh2
のために使用していて、頭(h2.next = copyOfHead
)のコピーを作る必要があるので、これはうまくいかないことは分かっていますが、コピーを作成しなくても、頭。
言語のようなものを想像していますか? ... C#? – phonetagger
@phonetagger C#、Java、問題はありません – Yar
まず、あなたは 'Listnode h1 = head; Listnode h2 = head; 'ではなく、現在持っている最初の4行です。 –