題目描述
在乙個排序的鍊錶中,存在重複的結點,請刪除該鍊錶中重複的結點,重複的結點不保留,返回煉表頭指標。 例如,鍊錶1->2->3->3->4->4->5 處理後為 1->2->5
解:說下大概思路:
與鍊錶的其他題目類似,為了防止刪除頭結點的極端情況發生,先建立空結點dummy,使dummy指向傳入的head結點。
然後建立cur的指標,指向鍊錶的頭部(即dummy)。
接著對cur指標迭代,因為要對比cur(cur最初始的定義指向空結點)指標的下乙個結點與下下乙個結點的值是否相等,為了防止產生空指標異常,故退出迭代的條件為:cur.next != null && cur.next.next != null。
在迭代過程中,如果cur.next.val == cur.next.next.val說明此時有重複元素,此時建立乙個臨時指標temp,指向cur的下乙個節點,即temp指向的第乙個重複元素所在的位置。通過while迴圈去重,去重後,temp指向的是重複元素中的最後乙個位置。最後cur.next = temp.next就實現了消除重複元素。
當然,如果為發現重複元素,則直接向後迭代即可。
迭代完成後,返回dummy的next。
/*
public class listnode }*/
public
class
solution
cur.next = temp.next;
}else
cur = cur.next;
}return dummy.next;
}}
刪除鍊錶中重複的結點
題目描述 在乙個排序的鍊錶中,存在重複的結點,請刪除該鍊錶中重複的結點,重複的結點不保留,返回煉表頭指標。例如,鍊錶1 2 3 3 4 4 5 處理後為 1 2 5。刪除鍊錶中重複的結點 author 過路的守望 public class duplicationnode 新建乙個節點指向頭結點 li...
刪除鍊錶中重複的結點
在乙個排序的鍊錶中,存在重複的結點,請刪除該鍊錶中重複的結點,重複的結點不保留,返回煉表頭指標。例如,鍊錶1 2 3 3 4 4 5 處理後為 1 2 5 解法一 遞迴 public class listnode public class solution if phead.next.val phe...
刪除鍊錶中重複的結點
在乙個排序的鍊錶中,存在重複的結點,請刪除該鍊錶中重複的結點,重複的結點不保留,返回煉表頭指標。例如,鍊錶1 2 3 3 4 4 5 處理後為 1 2 5 題目分析 刪除鍊錶中的結點要比較當前結點是否與前面結點和後面結點相同,只有兩個都不同的結點才保留。用pre儲存前乙個節點,cur儲存當前結點,c...