1. 程式人生 > >劍指Offer-連結串列-(8)

劍指Offer-連結串列-(8)

知識點/資料結構:連結串列

題目描述
在一個排序的連結串列中,存在重複的結點,請刪除該連結串列中重複的結點,重複的結點不保留,返回連結串列頭指標。 例如,連結串列1->2->3->3->4->4->5 處理後為 1->2->5

注意點:

就是指標的引用發生了改變,需要藉助新的起始點來進行指標的操作。

直接上程式碼;

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

    ListNode(int val) {
        this.val = val;
    }
}
*/
import java.util.LinkedList;
public class Solution {
    public ListNode deleteDuplication(ListNode pHead)
    {
        if (pHead == null) return null;
       
        ListNode n = new ListNode(0);
       
        n.next = pHead;
        
         ListNode pre = n;
         ListNode p = pHead;
        
        
        while (p != null) {
            ListNode q = p.next;
            if (q == null) break;
            if (q.val == p.val) {
                while (q != null && q.val == p.val) {
                    q = q.next;
                }
                pre.next = q;
                p = q;//更新p的值
            } else {
               
                pre = p;
                p = q;
            }
        }
        return n.next;
    }
}