题解 | #删除有序链表中重复的元素-II#

删除有序链表中重复的元素-II

http://www.nowcoder.com/practice/71cef9f8b5564579bf7ed93fbe0b2024

题意:


方法:
计数数组

思路:
        首先,遍历链表统计各值出现的次数;
        然后,遍历链表,将值出现的个数大于1的节点删除。

        注意点:为了方便,这里给链表新增头结点。(因为删除某节点必须得知道某节点的前一个节点,防止删除是第一个节点的特例,所以额外新建头结点)



class Solution {
public:
    unordered_map<int,int> mp;//计数数组
    ListNode* deleteDuplicates(ListNode* head) {
        ListNode *p=head;
        while(p){
            mp[p->val]++;//计数
            p=p->next;
        }
        ListNode *h=new ListNode(0);
        h->next=head;//新增头结点
        p=h;
        ListNode *q=head;
        while(q){
            if(mp[q->val]>1){//如果个数大于1,则删除
                p->next=q->next;
                q=q->next;
            }else{
                p=p->next;
                q=q->next;
            }
        }
        return h->next;
    }
};


时间复杂度:
空间复杂度:





全部评论

相关推荐

牛客41406533...:回答他在课上学,一辈子待在学校的老教授用三十年前的祖传PPT一字一句的讲解,使用谭浩强红皮书作为教材在devc++里面敲出a+++++a的瞬间爆出114514个编译错误来学这样才显得专业
点赞 评论 收藏
分享
双尔:你就写拥有ai开发经历,熟练运用提示词,优化ai,提高ai回答质量
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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