/** * Definition for singly-linked list. * public class ListNode { *     int val; *     ListNode next; *     ListNode() {} *     ListNode(int val) { this.val = val; } *     ListNode(int val, ListNode next) { this.val = val; this.next = next; } * } */class Solution {    public ListNode deleteDuplicates(ListNode head) {        if (head == null)            return null;        if (head.next == null)            return head;        ListNode dummyNode = new ListNode();        dummyNode.next = head;        ListNode p = head, q = head.next;        ListNode node = dummyNode;        while (q != null) {            if (p.val != q.val) {                node = node.next;                p = p.next;                q = q.next;            } else {                while (q != null && p.val == q.val)                    q = q.next;                node.next = q;                if (q == null || q.next == null)                    break;                p = q;                q = q.next;            }        }         return dummyNode.next;    }}