public ListNode deleteDuplicates(ListNode head) {
if (head == null) {
return null;
}
ListNode p = new ListNode();
p.next = head;
ListNode result = p;
while (p.next != null) {
int tmpVal = p.next.val;
ListNode tmp = p.next.next;
if (tmp != null && tmp.val == tmpVal) {
tmp = tmp.next;
while (tmp != null && tmp.val == tmpVal) {
tmp = tmp.next;
}
p.next = tmp;
}else if (tmp == null) {
return result.next;
}else {
p = p.next;
}
}
return result.next;
}
链表删数普遍比较简单,但是细节比较多。todo:再刷一遍