遍历链表的时候保留两个指针,prev表示前一个节点,cur表示当前节点。
prev的主要作用是在发现cur节点和后面有重复的时候断掉对cur的连接
在去重的时候我先保留了第一个重复的节点,直到删干净后面的重复节点以后再删除第一个重复节点

function deleteDuplicates( head ) {
    // write code here
    if(!head||!head.next) return head
    let res =  new ListNode(0)//指针用来保留结果
    res.next = head
    let cur = head
    let prev = res

    while(cur&&cur.next){//如果有一个为null说明指针已经到头了,不会再有重复了

        if(cur.val==cur.next.val){//发现重复

            while(cur.val==cur.next.val){//开始drop
                cur.next = cur.next.next//移除cur后面的一个
                if(!cur.next) break//如果移除到底,则停止
            }
            prev.next = cur.next//drop掉第一个重复节点,即cur
            cur = prev.next//重新定位cur

        }
        else{
            prev = cur
            cur = cur.next
        }

    }

    return res.next

}