删除链表中重复的结点_牛客题霸_牛客网 (nowcoder.com)
思路:
①定义傀儡节点newhead,指针pre指向newhead
②遍历链表,
如果当前节点 cur 的值和cur.next的值,如果相等 cur=cur.next 继续判断,直到不相等,
此时用pre.next 保存cur 的下一个节点
如果不相等,pre=pre.next.相当于是删除了中间的节点
public ListNode deleteDuplication(ListNode pHead) {
if(pHead==null||pHead.next==null){
return pHead;
}
ListNode newhead=new ListNode(-1);
newhead.next=pHead;
ListNode cur=pHead;
ListNode pre=newhead;
while(cur!=null){
if(cur.next!=null&&cur.val==cur.next.val){
while(cur.next!=null&&cur.val==cur.next.val){
cur=cur.next;
}
cur=cur.next;
pre.next=cur;
}else{
pre=pre.next;
cur=cur.next;
}
}
return newhead.next;
}