golang solution - sentinel node
`\nfunc deleteDuplicates(head *ListNode) *ListNode {\n    // sentinel\n    sentinel := &ListNode{Next: head}\n    \n    // predecessor = the last node\n    // b
```\nfunc deleteDuplicates(head *ListNode) *ListNode {\n    // sentinel\n    sentinel := &ListNode{Next: head}\n    \n    // predecessor = the last node\n    // before the sublist of duplicates\n    pred := sentinel\n    \n    for head != nil {\n        if head.Next != nil && head.Val == head.Next.Val {\n            for head.Next != nil && head.Val == head.Next.Val {\n                head = head.Next\n            }\n            \n            pred.Next = head.Next\n        } else {\n            pred = pred.Next\n        }\n        \n        // move forward\n        head = head.Next\n    }\n    \n    return sentinel.Next\n}\n``
['Go']