ホームページ  >  記事  >  Java  >  Javaで最後のリンクリストからN番目のノードを削除する方法

Javaで最後のリンクリストからN番目のノードを削除する方法

WBOY
WBOY転載
2023-04-28 15:52:141169ブラウズ
問題解決のアイデア
  1. 全体的なアイデアは、最初に前方のポインターを n ステップ移動させ、次に前方のポインターが最後に到達するまで前方と後方のポインターを一緒に移動させることです。

  2. 最初にアドバンス ポインターを設定します。アドバンス ポインターにはちょっとしたトリックがあり、質問 2 で説明されています。

  3. アドバンス ポインタ pre 次のノードは先頭を指します。フロント ポインタを 1 番目、バック ポインタを 2 番目にします。両方とも pre

  4. first に等しいです。最初に n ステップ先に進みます

  5. その後、1 番目と 2 番目が一緒に進みます。このとき、両者の間の距離は n です。1 番目が終点に到達したとき、2 番目の位置はちょうど n- の 1 つ前のノードになります。最後から 番目のノード。

Java コード
class Solution {
    
       public ListNode removeNthFromEnd(ListNode head, int n) {

        ListNode pre = new ListNode(0);
        pre.next = head;

        ListNode first = pre;
        ListNode second = pre;

        while (n>0){
            first= first.next;
            n--;
        }

        while (first.next != null){
            first=first.next;
            second=second.next;
        }
        second.next = second.next.next;

        return  pre.next;
    }
}

以上がJavaで最後のリンクリストからN番目のノードを削除する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はyisu.comで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。