题目描述
在一个排序的链表中,存在重复的结点,请删除该链表中重复的结点,重复的结点不保留,返回链表头指针。 例如,链表1->2->3->3->4->4->5 处理后为 1->2->5
记录一下自己唯一看懂的一种答案(==)
链接:https://www.nowcoder.com/questionTerminal/fc533c45b73a41b0b44ccba763f866ef
来源:牛客网
剑指offer没看,不知道是不是用的这个方法。
看懂了这个图,就明白了。
1.加一个头结点
2.两个临时指针p,q
3.找前后不相等的节点
截图中别人的答案是用java写的,但是思路是相同的。本题的关键在于头节点的处理,如何定位有效的头节点?这条思路中的解法十分巧妙,新建一个头节点(确定该头节点的值不会和pHead的值重合),最后统一返回head-next。其次,用p来保存有效的节点的前面一个节点,也就是说用p-next来保存真正保留的节点。