public class Solution {
public ListNode deleteDuplication(ListNode pHead) {
//辅助定义一个头节点(省去单独判断第一个节点的情况)
ListNode head = new ListNode(Integer.MIN_VALUE);
//使其指向pHead
head.next = pHead;
//定义两个快慢指针
ListNode one = head.next;
ListNode two = head;
//判断快指针
while(one != null){
//如果当前值和后一个值相等则进入循环
if(one.next != null && one.next.val == one.val){
//直到当前值和后一个值不相等退出循环
while(one.next != null && one.next.val == one.val){
//如果还相等使one向前走一步
one = one.next;
}
//当前值不等于后一个值,所以使one指向one.next
one = one.next;
//跳过相等的节点,让慢指针指向one
two.next = one;
}else{
//如果不相等则让two指向one,one在向后移一位
//以为自定义一个头结点所以需要把每个节点都指向一下
two = one;
one = one.next;
}
}
//返回头节点的下一个节点
return head.next;
}
}