0083.删除排序链表中的重复元素

方法一:一次遍历

时间复杂度 $O(n)$,空间复杂度 $O(1)$。

/**
 * Definition for singly-linked list.
 * type ListNode struct {
 *     Val int
 *     Next *ListNode
 * }
 */
func deleteDuplicates(head *ListNode) *ListNode {
	if head == nil {
		return head
	}
	dummy := &ListNode{Next: head}
	p := dummy.Next
	for ; head != nil; head = head.Next {
		if p.Val != head.Val {
			p.Next, p = head, head
		}
	}
	p.Next = nil
	return dummy.Next
}