zoukankan      html  css  js  c++  java
  • Leetcode每日一题 83. 删除排序链表中的重复元素

    83. 删除排序链表中的重复元素

    存在一个按升序排列的链表,给你这个链表的头节点 head ,请你删除链表中所有存在数字重复情况的节点,只保留原始链表中 没有重复出现 的数字。

    返回同样按升序排列的结果链表。

    示例 1:

    输入:head = [1,2,3,3,4,4,5]
    输出:[1,2,5]

    示例 2:

    输入:head = [1,1,1,2,3]
    输出:[2,3]

    提示:

    链表中节点数目在范围 [0, 300] 内
    -100 <= Node.val <= 100
    题目数据保证链表已经按升序排列

    跟昨天的题没啥区别,照样建新表。

    /**
     * Definition for singly-linked list.
     * struct ListNode {
     *     int val;
     *     ListNode *next;
     *     ListNode() : val(0), next(nullptr) {}
     *     ListNode(int x) : val(x), next(nullptr) {}
     *     ListNode(int x, ListNode *next) : val(x), next(next) {}
     * };
     */
    class Solution {
    
    public:
        ListNode* deleteDuplicates(ListNode* head) {
            if(head == nullptr)return head;
            ListNode * newhead = new ListNode(-1);
            newhead->next = nullptr;
            unordered_map<int,int> maps;
            ListNode * pre = head;
            while(pre != nullptr)
            {
                maps[pre->val]++;
                pre = pre->next;
            }
    
            pre = newhead;
            ListNode * cur = head;
            while(cur != nullptr)
            {
                while( cur != nullptr && maps[cur->val] > 1)
                {
                    cur = cur->next;
                }
                if(cur != nullptr)
                {
                    ListNode * node = new ListNode(cur->val);
                    pre->next = node;
                    pre = pre->next;
                    node->next = nullptr;
                }
            
                else break;
                cur = cur->next;
            }
            return newhead->next;
        }
    };
  • 相关阅读:
    java中文件的读取和写入
    ==与equal在java中应用的感悟
    Gson心得小笔记
    几种排序的算法
    HttpClient的使用方法
    StringBuffer
    laravel5.5容器
    常用会话管理方式
    css一些事儿
    关于时间的梳理
  • 原文地址:https://www.cnblogs.com/xiangqi/p/14584634.html
Copyright © 2011-2022 走看看