题目描述
在一个排序的链表中,如何删除重复的节点?例如,1-2-3-3-4-4-5删除之后变成了1-2-5
解题思路
解题的关键是
1.如何判断节点是重复的?
在一个已排好序的链表中,我们只需要判断相邻的两个节点的值是不是一致就可以知道节点是否重复。
2.如何删除全部重复的节点?从开始就重复怎么办?
我们需要记录重复节点的前一个节点,如上面例子中从3开始重复,所以我们需要一个指针来记录2避免链表截断。
如果从头就开始重复,那么和在链表中不重复还不太一样,所以我们在处理的时候要分两种情况,一定要考虑完全。
主要代码c++
/*
struct ListNode {
int val;
struct ListNode *next;
ListNode(int x) :
val(x), next(NULL) {
}
};
*/
class Solution {
public:
ListNode*