Source:

class Solution {
    public ListNode deleteDuplicates(ListNode head) {
        if (head == null) return head;
        ListNode curr = head;
        ListNode next = head;
        while(next != null) {
            if (curr.val != next.val) {
                curr.next = next;
                curr = curr.next;
            }
                next = next.next;
        }
        curr.next = null;
        return head;
    }
}

和数组双快慢指针的思路是类似的