リンクリストのノードjavaを削除します

リンクリスト内の特定の(非終了)ノードを削除する関数を記述してください。関数に渡される唯一のパラメーターは、削除されるノードです。

リンクリストがあります– head = [4,5,1,9]、これは次のように表すことができます。
ここに画像の説明を挿入

例1:

入力:head = [4,5,1,9]、node = 5
出力:[4,1,9]
説明:リンクリストで値が5の2番目のノードを指定し、関数を呼び出した後、リンクリスト4-> 1-> 9である必要があります。
例2:

入力:head = [4,5,1,9]、node = 1
出力:[4,5,9]
説明:リンクリストの値が1である3番目のノードを指定し、関数を呼び出した後、リンクリスト4-> 5-> 9である必要があります。

促す:

リンクリストには、少なくとも2つのノードが含まれています。
リンクリスト内のすべてのノードの値は一意です。
指定されたノードは終了ノードではなく、リンクリスト内の有効なノードである必要があります。
関数から結果を返さないでください。

ソース:LeetCode(LeetCode)
リンク:https ://leetcode-cn.com/problems/delete-node-in-a-linked-list
著作権はLeetCodeが所有しています商用の再版については、公式の承認に連絡してください。非商用の再版については、出典を示してください。

アイデア:この質問の冒頭で、値が1つしかないため、前の値を見つけて、指定した値を削除するという考えでした。その結果、しばらく探したところ、頭が入らないことがわかりました。 。しばらく唖然としたので見に行きました。問題解決の結果、頭の体操問題解決があります。これは確かに新しいアイデアであり、時間計算量も低いです。唯一の欠点は不利な点ではありませんが、それがテールノードになることはできません。

/**
 * Definition for singly-linked list.
 * public class ListNode {
 *     int val;
 *     ListNode next;
 *     ListNode(int x) { val = x; }
 * }
 */
class Solution {
    
    
    public void deleteNode(ListNode node) {
    
    
        node.val = node.next.val;
        node.next = node.next.next;

    }
}

おすすめ

転載: blog.csdn.net/weixin_43824233/article/details/112604596