leetcode82 删除排序链表中的重复元素II

题目

给定一个已排序的链表的头 head , 删除原始链表中所有重复数字的节点,只留下不同的数字 。返回 已排序的链表 。

示例

输入:head = [1,2,3,3,4,4,5]
输出:[1,2,5]

解析

这道题要将重复的元素都删除了,这就意味着头节点也可能会被删掉,因此就需要dummy,同时来进行判断的是.next和 .next.next

func deleteDuplicates1(head *ListNode) *ListNode {
	if head == nil {
		return head
	}
	dummy := &ListNode{}
	dummy.Next = head
	pre := dummy
	for pre.Next != nil && pre.Next.Next != nil {
		if pre.Next.Val == pre.Next.Next.Val {
			tmp := pre.Next.Val
			for pre.Next != nil && pre.Next.Val == tmp {
				pre.Next = pre.Next.Next // 注意删哪个
			}
		} else {
			pre = pre.Next
		}
	}
	return dummy.Next
}

你可能感兴趣的:(#,leetcode链表系列,链表,数据结构)