私はコーディングインタビューをクラッキングする上で問題を練習していました。リンクされたリストの中のノードを削除するように求める問題の解決策を思いつきました。現在のノードをNullに設定しますか?
public void deleteMidNode(Node mid){
if(mid == head || mid.next==null){
return;
}
Node current = mid;
while(current.next.next!=null){
current.data = current.next.data;
current = current.next;
}
current.next = null;
}
このコードは機能します。これをテストしました。しかし、私は私がnullにcurrent.next
を設定することができます理由として興味が、私はこれを行うにした場合、それは動作しません:
public void deleteMidNode(Node mid){
if(mid == head || mid.next==null){
return;
}
Node current = mid;
while(current.next!=null){
current.data = current.next.data;
current = current.next;
}
current = null;
}
私は、現在のノードを設定することはできません、なぜ誰も教えてもらえますnull
?
なぜそれが頭や尾である場合は、打ち切りますか? – weston
'current = null'はこの変数の値を単に代入するだけです。基底の 'Node'オブジェクトは変更されません。 –
これは正しくありません。リンクされたリストから項目を削除するには、O(1)一定時間手順を使用する必要があります。 O(n) – weston