/**
* 设置一个首节点,遍历扫描,并设置
* pre,cur,next三个指针
*
* @param head
* @return
*/
public static ListNode deleteDuplicates(ListNode head) {
// write code here
ListNode node = new ListNode(0);
node.next = head;
ListNode next;
ListNode cur = head;
ListNode pre = node;
while (cur != null) {
next = cur.next;
boolean tmp = false;
while (next != null && cur.val == next.val) {
next = next.next;
pre.next = next; // 前一个不同节点指向下一个不同节点
tmp = true;
}
if (!tmp) { // 如果以前没有相同的节点,则pre指向当前节点,保证下次遇到相同的节点设置next
pre = cur;
}
cur = next;
}
return node.next;
}