- 删除链表中重复的结点:在一个排序的链表中,存在重复的结点,请删除该链表中重复的结点,重复的结点不保留,返回链表头指针。
基本思想:
1.设置一个虚拟的新的链表的头结点,其后用来放不重复的结点
2.用cur遍历原链表,遇到前后值相等的两个结点,cur就向后走一步
3.对于不重复的结点,就尾插到新的链表后面
public class Solution {
public ListNode deleteDuplication(ListNode pHead) {
ListNode newhead = new ListNode(-1);
ListNode p = newhead;
ListNode cur = pHead;
if(pHead == null){
return null;
}
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;
}
cur = cur.next;
}
else{
ListNode curNext = cur.next;
p.next = cur;
p = cur;
cur = curNext;
}
}
p.next = null;
return newhead.next;
}
}