题解 | #删除链表中重复的结点#

删除链表中重复的结点

https://www.nowcoder.com/practice/fc533c45b73a41b0b44ccba763f866ef


/*
struct ListNode {
    int val;
    struct ListNode *next;
    ListNode(int x) :
        val(x), next(NULL) {
    }
};
*/
class Solution {
public:
    ListNode* deleteDuplication(ListNode* pHead) {
        if(!pHead) return nullptr;
        ListNode *pre = new ListNode(0);
        pre->next = pHead;
        ListNode *last = nullptr;
        ListNode *p = nullptr;
        int cur = -1;
        last = pre;
        p = pHead;
        cur = pHead->val;
	  //时间复杂度O(n),空间复杂度O(1),因为是顺序的所以没必要额外记录
        while(p->next)
        {
            if(p->next->val==cur)
            {
                while(p->next && p->next->val==cur)
                    p=p->next;
                p=p->next;
                last->next=p;
            }else {
                last = p;
                p=p->next;
            }
            if(p)
                cur = p->val;
            else
             break;
        }
        return pre->next;
    }
};

磨砂的指名者 文章被收录于专栏

怎么绘世呢?

全部评论

相关推荐

06-12 16:00
天津大学 Java
牛客30236098...:腾讯坏事做尽,终面挂是最破防的 上次被挂了后我连简历都不刷了
点赞 评论 收藏
分享
小叮当411:应该是1-3个月吧
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务