• 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;
        }
    };
  • 相关阅读:
    Oracle和MySQL的对比
    mysql的默认隔离级别
    mysql数据库中锁机制的详细介绍
    什么电影是好电影
    周记 2019.4.8~4.14
    周记 2019.3.25~2019.3.31
    IntelliJ Idea 使用笔记
    笔记
    kafka总结
    Spring boot
  • 原文地址:https://www.cnblogs.com/xiangqi/p/14584634.html
Copyright © 2020-2023  润新知