58.複製ノードのリストを削除します。

件名の説明:

  ソートされたリンクリストのノードが重複して、重複したノードのリストを削除し、ノードが繰り返さ保持していない、ヘッド・ポインタ・リストを返します。
例えば、リスト4-> 5が処理され> 2-> 3-> 3-> 4-> 1- 1-> 2-> 5

アイデアの分析:

  二つのアイデア:

  リストの最初のノードを指すポインタを設定することができ、再帰を使用する第1の方法は、我々は、ヘッドノードを通過起動しない、重複したノード値を削除することが下方トラバーサル場合、現在のノードと次のノードの値が等しいかどうか判断されますそれは最初のノードが等しくない遭遇するまで、開始点からリストの新しいヘッドは、上記の動作は、次のノードが繰返さない見つけるために繰り返されます。

  第二の方法は、再帰、上記と同じ考え方とを使用することです。

コード:

この方法の一つ:

/*public class ListNode {
    int val;
    ListNode next = null;

    ListNode(int val) {
        this.val = val;
    }
}
*/
public class Solution {
    public ListNode deleteDuplication(ListNode pHead)
    {
        if(pHead==null)
            return null;
        if(pHead.next==null)
            return pHead;
        ListNode first=new ListNode(-1);
        first.next=pHead;
        ListNode last=first;
        ListNode pNode=pHead;
        while(pNode!=null&&pNode.next!=null){
            if(pNode.val==pNode.next.val){
                int val=pNode.val;
                while(pNode!=null&&pNode.val==val){  //切记在链表中循环遍历一定要判断当前节点是否为空。
                    pNode=pNode.next;
                }
                last.next=pNode;   
            }else{
                last=pNode;
                pNode=pNode.next;
            }
        }
        return first.next;
    }
}

方法2:

/*
 public class ListNode {
    int val;
    ListNode next = null;

    ListNode(int val) {
        this.val = val;
    }
}
*/
public class Solution {
    public ListNode deleteDuplication(ListNode pHead)
    {
        if(pHead==null)
            return null;
        if(pHead.next==null)
            return pHead;
        if(pHead.val==pHead.next.val){
            ListNode pNode=pHead;
            int val=pNode.val;
            while(pNode!=null&&val==pNode.val){
                pNode=pNode.next;
            }
            return deleteDuplication(pNode);   //找到第一个不重复的点开始递归。
             
        }else{
            pHead.next=deleteDuplication(pHead.next); //如果当前节点不是重复的保存下来,从下一个节点开始递归。
            return pHead;
        }
        
}
}

おすすめ

転載: www.cnblogs.com/yjxyy/p/10961217.html
おすすめ