刪除該鏈表中重複的結點

在一個排序的鏈表中,存在重複的結點,請刪除該鏈表中重複的結點,返回鏈表頭指針。

例如,鏈表1->2->3->3->4->4->5 處理後爲 1->2->3->4->5

import java.util.ArrayList;

public class DeleteDuplicateListNode {


    public static ListNode deleteDuplication(ListNode pHead)
    {
        if(pHead == null){
            return  null;
        }
        ArrayList<Integer> list = new ArrayList<>();
        list.add(pHead.val);
        /**
         * header指向首節點,肯定不是重複的,header一旦確定就不會改變。
         * pHead此時也是不重複的,用來指向當前不重複的節點,依靠pHead在遍歷的過程建設一個不重複的節點鏈
         * pHead在遍歷的過程中是變化的。經判斷當前節點current不重複時,1. 先設定pHead代表的節點的下一個不重複的節點爲current,
         * 2. 重新設定pHead的指針,讓pHead指向當前不重複的節點current。
         */
        ListNode header = pHead;
        ListNode current = pHead.next; // current指向當前正在遍歷的節點,在遍歷時一直變化
        while(current!=null){
            if(list.contains(current.val)){
                current = current.next;
            }else{
                list.add(current.val);
                pHead.next = current;
                pHead = current;
            }
            current = current.next;
        }
        return header;
    }

    public static void main(String[] args) {
        ListNode node = new ListNode(1);
        ListNode node1 = new ListNode(2);
        ListNode node2 = new ListNode(3);
        ListNode node3 = new ListNode(3);
        ListNode node4 = new ListNode(4);
        ListNode node5 = new ListNode(4);
        ListNode node6 = new ListNode(5);
        node.next=node1; node1.next=node2; node2.next=node3;
        node3.next=node4; node4.next=node5; node5.next = node6;
        ListNode uniqueNode = deleteDuplication(node);
        while (uniqueNode != null) {
            System.out.print(uniqueNode.val+"->");
            uniqueNode = uniqueNode.next;
            try {
                Thread.sleep(100);
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
        }

    }

}

class ListNode {

    int val;
    ListNode next = null;

    ListNode(int val) {
        this.val = val;
    }
}

 

發佈了39 篇原創文章 · 獲贊 9 · 訪問量 12萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章