问题
思路
我的逻辑就是对于每个节点,枚举后面的节点,找到重复节点的下一个节点。
当然,既然有序的,也可以哈希表。
代码
/*
struct ListNode {
int val;
struct ListNode *next;
ListNode(int x) :
val(x), next(NULL) {
}
};
*/
class Solution {
public:
ListNode* deleteDuplication(ListNode* pHead)
{
if(!pHead) return NULL;
ListNode* pre = NULL;
ListNode* cur = pHead;
while(cur){
ListNode* nex = cur->next;
if(!nex) break;
if( cur->val != nex->val ){
pre = cur;
cur = nex;
}else{
while(nex && (nex->val == cur->val) ){
nex = nex->next;
}
if(!pre){
pre = NULL;
cur = nex;
pHead = cur;
}
else{
pre->next = nex;
cur = nex;
}
}
}
return pHead;
}
};