は、それを解決しましたが、まだListNode(質問内容は、以下に添付)のこれらの基本的な部分を理解していない:リスト要素のリンクを削除、私は基本的なものですが、私は混乱して作る
1.Is「の1->> 3 2- - > 3-> 4-> 5-> 3 "JavaのListNodeの標準式ですか? removeElementsのパラメータは "head"で、ノードのように見えますが、ListNodeをどのように入力できるのか、それとも "ネストされた" ListNodeですか?
2. "removeElements"関数は "return" "dummy.next"で、最初の入力引数と同じ型を持ちます。しかし、whileループでは、obj.nextはNode(私は思った)です。 "return"ステートメントでは、明らかに "1-> 2-> 3-> 3-> 4- > 5-> 3 "、どのようにすることができますか?
リンクされたリスト要素を削除する 例 1-> 2-> 3-> 3-> 4-> 5-> 3、val = 3の場合、リストを1-> 2-> 4- > 5
/**
* Definition for singly-linked list.
* public class ListNode {
* int val;
* ListNode next;
* ListNode(int x) { val = x; }
* }
*/
public class Solution {
/**
* @param head a ListNode
* @param val an integer
* @return a ListNode
*/
public ListNode removeElements(ListNode head, int val) {
// Write your code here
ListNode dummy = new ListNode(0);
dummy.next = head;
head = dummy;
while (head.next != null) {
if (head.next.val == val) {
head.next = head.next.next;
} else {
head = head.next;
}
}
return dummy.next;
}
}
ありがとうございます!あなたの照明に基づいた私の結論は次のとおりです。入力タイプ: "1-> 2-> 3-> 3-> 4-> 5-> 3は、OJシステムでのみ使用される何らかの表現です。 OJのようにこの種の入力を受け入れる関数を作成した場合にも認識されます。あれは正しいですか?データ構造は、私たちが使用するためのツールの一種です。アルゴリズムブックのListNodeはノードを1つずつ挿入し、 " - >"は使用しない。だから、addNodeやinsertNodeというメソッドを作って、nodeをListNodeに一つずつ置くことは、私たちが使う最も一般的な方法です。それも正しいですか? – STR
OJシステムとは何ですか?あなたのアンダースタンディングは大抵正しいです。 ListNodeは実際にはNodeです。あなたはそれにノードを追加しません。 "1-> 2-> 3-> 3-> 4-> 5-> 3"で各要素のLinkNodeを作成し、次の要素を前の要素に設定します。次のようになります。LinkNode node1 =新しいLinkNode(1); NodeLink node2 =新しいLinkNode(2); node1.next = node2; – alpert
ええ、知識のその部分は今私のために明確です。ありがとう! Btw、OJ私はabbrです参照してください。オンラインジャッジまたはLeetcodeオンラインジャッジのためにちょうどあなたに知らせるために。 – STR