題目描述
在一個排序的鏈表中,存在重複的結點,請刪除該鏈表中重複的結點,重複的結點不保留,返回鏈表頭指針。 例如,鏈表1->2->3->3->4->4->5 處理後爲 1->2->5
思路:
1、首先添加一個頭節點,以方便碰到第一個,第二個節點就相同的情況
2、設置 pre ,cur指針, pre指針指向當前確定不重複的那個節點,而cur指針相當於工作指針,一直往後面搜索。
3、最後返回新頭。
代碼如下:
public class Solution {
public ListNode deleteDuplication(ListNode pHead)
{
if (pHead==null || pHead.next==null)
{
return pHead;
}
ListNode newHead = new ListNode(-1);
newHead.next = pHead;
ListNode pre = newHead;
ListNode cur = newHead.next;
while(cur != null) {
//重複節點
if(cur.next != null
&& cur.val == cur.next.val){
while(cur.next != null
&& cur.val == cur.next.val) {
cur = cur.next;
}
pre.next = cur.next;
cur = cur.next;
}else {
pre = pre.next;
cur = cur.next;
}
}
return newHead.next;
}
}