题解 | #删除有序链表中重复的元素-II#
删除有序链表中重复的元素-II
http://www.nowcoder.com/practice/71cef9f8b5564579bf7ed93fbe0b2024
要注意下面这段代码:
ListNode hair = new ListNode(1001);
hair.next = head;
ListNode p = hair;
ListNode p1, p2;
p1 = hair;
p2 = hair.next;
因为第一个元素是重复的对于后面的核心循环来说是一个特殊情况,核心循环是检测不到第一个元素重复的情况的,所以我们可以考虑把特殊转化为一般,即把传来的链表 head 表头前面再加一个节点,并确保加的节点的值不在 val 的范围内,这样一来原表的表头节点就变为了非表头节点,特殊情况被排除,核心循环便能够处理到原链表中的每一个元素,这样可以简化掉处理特殊情况的额外代码逻辑。 。。