剑指offer57 删除链表中重复的结点
Posted 去做点事情
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了剑指offer57 删除链表中重复的结点相关的知识,希望对你有一定的参考价值。
错误代码:
class Solution { public: ListNode* deleteDuplication(ListNode* pHead) { if(pHead == NULL) return NULL; if(pHead->next == NULL) return pHead; ListNode* current = NULL; if(pHead->val == pHead->next->val){ current = pHead->next->next; while(current->val == pHead->val && current != NULL) current = current->next; return deleteDuplication(current); } else{ current = pHead->next; pHead->next = deleteDuplication(current); } return pHead; } };
正确代码:
class Solution { public: ListNode* deleteDuplication(ListNode* pHead) { if(pHead == NULL) return NULL; if(pHead->next==NULL) return pHead; ListNode* current = NULL; if(pHead->val == pHead->next->val){ current = pHead->next->next; while(current != NULL && current->val == pHead->val) current = current->next; return deleteDuplication(current); } else{ current = pHead->next; pHead->next = deleteDuplication(current); //return pHead; } return pHead; } };
可以看到不同点只是把current->val == pHead->val和current != NULL换了一下位置
错误的代码报错报的是:段错误:您的程序发生段错误,可能是数组越界,堆栈溢出(比如,递归调用层数太多)等情况引起
以上是关于剑指offer57 删除链表中重复的结点的主要内容,如果未能解决你的问题,请参考以下文章