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

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

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

/**
 * struct ListNode {
 *  int val;
 *  struct ListNode *next;
 *  ListNode(int x) : val(x), next(nullptr) {}
 * };
 */
#include <unordered_map>
class Solution {
  public:
    /**
     * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
     *
     *
     * @param head ListNode类
     * @return ListNode类
     */
    ListNode* deleteDuplicates(ListNode* head) {
        // write code here

        std::unordered_map<int, int> countMap;

        // 统计每个元素的出现次数
        ListNode* current = head;
        while (current) {
            countMap[current->val]++;
            current = current->next;
        }

        // 创建新链表,只保留出现次数为1的元素
        ListNode* newHead = nullptr;
        ListNode* tail = nullptr;
        current = head;
        while (current) {
            if (countMap[current->val] == 1) {
                if (!newHead) {
                    newHead = tail = new ListNode(current->val);
                } else {
                    tail->next = new ListNode(current->val);
                    tail = tail->next;
                }
            }
            current = current->next;
        }

        return newHead;
    }

};

思路:哈希表统计数量,然后再找其中只出现一次的,加到新链表。尾插法,newhead和tail

全部评论

相关推荐

09-19 19:43
已编辑
广东工业大学 golang
zizi哦:很牛了,稳大厂给几点建议:一、想被稳的问题,关键点,可以加深一点,一眼看过去全是文字,没事干容易抓不住重点;二、第一个开源项目很多人 star,这是一个证明你牛逼的证据,建议放在项目背景,开头就是这句话,背景到结果,并且重点标注;三、个人技能可以放后,没什么把握的可以不写上去,比如你列了这么多微服务中间件,你确定自己真的理解底层吗?如果不熟悉,可以表述为熟悉微服务体系开发,如 xxx 中间件;四、项目很多描述在讲述架构,有没有自己觉得亮点的设计,体现不出你解决问题的过程和思考。
如何写一份好简历
点赞 评论 收藏
分享
不愿透露姓名的神秘牛友
09-19 14:48
喝喝发工资还以为是我什么退款到账了
迷茫的大四🐶:这个应该不是完整一个月的吧,首个工作月就几天的话也正常
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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