/*
* public class ListNode {
* int val;
* ListNode next = null;
* }
*/
public class Solution {
/**
*
* @param head ListNode类
* @return ListNode类
*/
public ListNode deleteDuplicates (ListNode head) {
// write code here
//哨兵结点
ListNode headPre=new ListNode(1);
headPre.next=head;
ListNode tempNode=head;
ListNode tempNodePre=headPre;
while(tempNode!=null){
boolean flag=false;
//删除保留一个重复的元素,设立flag判断是否有删除
while(tempNode.next!=null&&tempNode.val==tempNode.next.val){
tempNode.next=tempNode.next.next;
//表示存在相同元素
flag=true;
}
if(flag){
//如果有删除,tempNodePre结点跳过该结点指向后面一个,tempNodePre不变
tempNodePre.next=tempNode.next;
}else{
//如果没删除,tempNodePre结点和tempNode结点一起往后移一格
tempNodePre=tempNodePre.next;
}
tempNode=tempNode.next;
}
return headPre.next;
}
}