package main
import . "nc_tools"
/*
 * type ListNode struct{
 *   Val int
 *   Next *ListNode
 * }
 */

/**
 * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
 *
 * 
 * @param head ListNode类 
 * @return ListNode类
*/
func deleteDuplicates( head *ListNode ) *ListNode {
    // write code here
    if head == nil {
        return nil
    }
    var pre, cur *ListNode
    flag := false
    var val int
    h1 := &ListNode{Next: head}
    pre = h1
    cur = pre.Next
    for cur != nil {
        val = cur.Val
        for cur.Next != nil && cur.Next.Val == val {
            cur = cur.Next
            flag = true
        }
        if flag { // 多节点,不移动pre节点
            pre.Next = cur.Next
            flag = false
        } else {
            pre = pre.Next //遇到单一节点,移动节点
        }
        if pre == nil {
            break
        }
        cur = pre.Next
    }
    return h1.Next
}