zoukankan      html  css  js  c++  java
  • AcWing 29. 删除链表中重复的节点

    题目地址 https://www.acwing.com/problem/content/description/27/

    来源:剑指Offer

    题目描述
    在一个排序的链表中,存在重复的结点,请删除该链表中重复的结点,重复的结点不保留。

    样例

    样例1
    输入:1->2->3->3->4->4->5
    
    输出:1->2->5
    样例2
    输入:1->1->1->2->3
    
    输出:2->3

    算法1
    这是投机取巧的做法
    在时间和空间不太要求的情况下
    可使用STL进行unique的操作
    遍历链表 将元素放进map
    在遍历map将不重复的元素放进链表
    注意边界条件

    C++ 代码

    /**
     * Definition for singly-linked list.
     * struct ListNode {
     *     int val;
     *     ListNode *next;
     *     ListNode(int x) : val(x), next(NULL) {}
     * };
     */
    class Solution {
    public:
        map<int,int> s;
        ListNode* deleteDuplication(ListNode* head) {
            ListNode* p = head;
            //边界情况直接返回
            if(p == NULL)
                return p;
            //将链表数值放入map 让容器自动去重
            while(p != NULL){
                s[p->val]++;
                p = p->next;
            }
    
            p = head;
            ListNode* pre=head;
            //遍历容器 再次放入链表
            for(auto& e:s){
                if(e.second == 1){
                    p->val = e.first;
                    pre = p;
                    p = p->next;
                }
            }
            //多余的链表删除 这里直接NULL 没有释放
            pre->next=NULL;
            //注意边界条件
            if(pre == head)
                return NULL;
            return head;
        }
    };

    作者:defddr
    链接:https://www.acwing.com/solution/AcWing/content/2877/
    来源:AcWing
    著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

    作 者: itdef
    欢迎转帖 请保持文本完整并注明出处
    技术博客 http://www.cnblogs.com/itdef/
    B站算法视频题解
    https://space.bilibili.com/18508846
    qq 151435887
    gitee https://gitee.com/def/
    欢迎c c++ 算法爱好者 windows驱动爱好者 服务器程序员沟通交流
    如果觉得不错,欢迎点赞,你的鼓励就是我的动力
    阿里打赏 微信打赏
  • 相关阅读:
    java8新特性学习五(接口中的默认方法与静态方法)
    java8新特性学习四(Optional类)
    [record]WebLogic域之创建-文本界面
    [转]java 关于httpclient 请求https (如何绕过证书验证)
    数组与串,串的实现,KMP,BF算法
    git
    nginx设置重写规则
    深入PHP 第三章笔记
    进程和线程
    JS 获取 iframe内元素,及iframe与html调用
  • 原文地址:https://www.cnblogs.com/itdef/p/11201797.html
Copyright © 2011-2022 走看看