在一个排序的链表中,存在重复的结点,请删除该链表中重复的结点,重复的结点不保留,返回链表头指针。 例如,链表1->2->3->3->4->4->5 处理后为 1->2->5
示例1
输入
复制
{1,2,3,3,4,4,5}
返回值
复制
{1,2,5}
class ListNode {
int val;
ListNode next;
ListNode(int x) {
val = x;
next = null;
}
}
public ListNode deleteDuplication(ListNode pHead){
if(pHead==null){
return null;
}
if(pHead.next==null){
return pHead;
}
//遍历链表
ListNode result=new ListNode(-1);//创建一个带傀儡节点的链表
ListNode resultTail=result;//resultTail:结果链表的尾部
ListNode cur=pHead;
while (cur!=null){
if(cur.next!=null&&cur.val==cur.next.val){
while (cur!=null&&cur.next!=null&&cur.val==cur.next.val){
cur=cur.next;
}
else{
resultTail.next=new ListNode(cur.val);
resultTail=resultTail.next;
}
cur=cur.next;
}
return result.next;
}