Given the head of a sorted linked list, delete all nodes that have duplicate numbers, leaving only distinct numbers from the original list. Return the linked list sorted as well.
Example 1:

Input: head = [1,2,3,3,4,4,5] Output: [1,2,5]
Example 2:

Input: head = [1,1,1,2,3] Output: [2,3]
Constraints:
[0, 300].-100 <= Node.val <= 100删除排序链表中的重复元素II。
时间O(n)
空间O(1)
思路:
需要创建一个dummy节点,放在所有需要遍历的节点之前,遍历的时候,
找是否有两个节点的val相同,找到后记下这个val。
再往后遍历的时候,只要遇到这个val就跳过。
class Solution {
public ListNode deleteDuplicates(ListNode head) {
if(head==null||head.next==null){
return head;
}
ListNode p=new ListNode(0);
ListNode cur=p;
cur.next=head;
while(cur.next!=null && cur.next.next!=null){
if(cur.next.val==cur.next.next.val){
int flagVal=cur.next.val;
while(cur.next!=null&&cur.next.val==flagVal){
cur.next=cur.next.next;
}
}else{
cur=cur.next;
}
}
return p.next;
}
}
原文:https://www.cnblogs.com/iwyc/p/15202826.html