剑指offer-删除链表中重复的结点

/*
struct ListNode {
    int val;
    struct ListNode *next;
    ListNode(int x) :
        val(x), next(NULL) {
    }
};
*/
class Solution {
public:
    ListNode* deleteDuplication(ListNode* pHead)
    {
        if(pHead==NULL||pHead->next==NULL)return pHead;
        ListNode* first=pHead;
        ListNode* pre=new ListNode(-1);
        pre->next=pHead;
        ListNode* p=pre;
        ListNode* last=first->next;
        while(last){
            if(first->val==last->val){
                int val=first->val;
                while(last&&last->val==val)last=last->next;
                pre->next=last;
                
            }
            else pre=first;
            first=last;
            if(last)last=last->next;
        }
        return p->next;
    }
};
阅读更多
个人分类: 剑指offer
上一篇rc4的简单实现
下一篇剑指offer-二维数组的查找
想对作者说点什么? 我来说一句

剑指Offer-名企面试官精讲面试试题

2015年05月07日 21.46MB 下载

剑指offer-(java版-2).pdf

2018年03月21日 469KB 下载

剑指offer-面试

2013年05月29日 21.21MB 下载

线性表中重复结点删除.txt

2012年04月17日 3KB 下载

删除链表中倒数第N个结点

2017年04月13日 828B 下载

没有更多推荐了,返回首页

关闭
关闭