题目
在一个排序的链表中,存在重复的结点,请删除该链表中重复的结点,重复的结点不保留,返回链表头指针。 例如,链表1->2->3->3->4->4->5 处理后为 1->2->5
思路
先建立一个头结点以防第一个链表节点就是重复的。然后使用双指针 ,pre指针指向当前确定不重复的那个节点,cur向前搜索判断是否重复。
代码
public class Solution {
public ListNode deleteDuplication(ListNode pHead)
{
ListNode head = new ListNode(0);
head.next = pHead;
ListNode pre = head;
ListNode cur = pHead;
while(cur!=null){
while(cur.next!=null&&cur.val==cur.next.val)
cur=cur.next;
if(pre.next!=cur){
cur=cur.next;
pre.next=cur;
}
else{
pre=cur;
cur=cur.next;
}
}
return head.next;
}
}