ここにカタログタイトルを書く
1.タイトル
2.私の最初の考えと問題
この質問は非常に思慮深く、リンクリストの長さを取得した後、ダミーノードを直接定義し、forループを使用して削除するノードの前のノードを取得してからtemp2.next = temp2.next.next;
、削除を完了します。
3.問題解決方法1:ダミーノードを定義します。
class Solution {
public ListNode removeNthFromEnd(ListNode head, int n) {
ListNode temp = head;
int length = 0;
//定义一个虚拟节点
ListNode virtus = new ListNode(0 ,head);
ListNode temp2 = virtus;
//遍历链表,获取链表长度
while(temp != null){
length++;
temp = temp.next;
}
//获取被删除节点的前一个节点
for(int i = 0;i< length - n;i++){
temp2 = temp2.next;
}
temp2.next = temp2.next.next;
return virtus.next;
}
}
これは私が直接書いたコードです。注
(1)仮想ノードを定義するステートメント:ListNode virtus = new ListNode(0 ,head);
valはint型であり、最初に「」を書くことに注意を払っていなかったため、最初のパラメーターは0に設定されます。 。
(2)最後の戻り値virtus.nextに注意してください。戻り値はtemp2ではなく、temp2は元のリンクリスト内のノードを変更するための補助ノードとして使用され、仮想ノードvirtusは常に同じです。変更されたリンクリストを取得できます。