删除链表中重复的结点

来源:互联网 发布:linux 系统 死机 日志 编辑:程序博客网 时间:2024/04/30 02:04

题目描述

在一个排序的链表中,存在重复的结点,请删除该链表中重复的结点,重复的结点不保留,返回链表头指针。 例如,链表1->2->3->3->4->4->5 处理后为 1->2->5

/*struct ListNode {    int val;    struct ListNode *next;    ListNode(int x) :        val(x), next(NULL) {    }};*/class Solution {public:    ListNode* deleteDuplication(ListNode* pHead)    {       if(pHead==NULL) return pHead;       return dfs(pHead,pHead->val-1);    }    ListNode* dfs(ListNode* p,int pre)    {        if(p==NULL) return NULL;        if(p->val==pre) return dfs(p->next,p->val);        if(p->next&&p->next->val==p->val) return dfs(p->next,p->val);        p->next=dfs(p->next,p->val);        return p;    }};




0 0
原创粉丝点击