###题目
给定一个排序链表,删除所有含有重复数字的节点,只保留原始链表中没有重复出现 的数字。
- 输入: 1->2->3->3->4->4->5
- 输出: 1->2->5
- 输入: 1->1->1->2->3
- 输出: 2->3。
###思路
这算是80题的进阶版吧。
newbie:leetcode 80 删除排序数组中的重复项Ⅱ(c++)zhuanlan.zhihu.com因为容器从数组换成了链表,处理细节上就不一样了。
- 首先设置一个指针p1,其指向head。
- 判断p1后面是否存在两个节点,并且这两个节点的值是否相同。
- 若相同,记录相同值为num,然后开始从p1->next开始挨个删除值等于num的节点,并且将被删除节点的next设为p1->next.
- 直到p1->next的值不等于num,重新开始遍历。
- 如p1后面的两个节点的值不同,那么p1=p1->next。
- 遍历结束返回删除结束后的链表的头部即可。
逻辑不复杂,但是一定要注意细节上的处理。
###code
/**