/**
Definition for singly-linked list.
type ListNode struct {
Val int
Next *ListNode
-
}
*/
func deleteDuplicates(head *ListNode) *ListNode {
cur := head
prevnode := &ListNode{}
prev := -1 << 53
for cur != nil {
if cur.Val == prev {
// prev表示上一个node的值
// 和前一个节点相同,删除
prevnode.Next = cur.Next
cur.Next = nil
cur = prevnode.Next // 右边移动
// memory leak
// 如果删除的话上一个节点,和其值不应该变
} else {
prevnode = cur
prev = cur.Val
cur = cur.Next
}
}return head
}