当前位置: 首页 > article >正文

02.01、移除重复节点

02.01、[简单] 移除重复节点

1、题目描述

编写代码,移除未排序链表中的重复节点。保留最开始出现的节点。

2、解题思路

为了实现这一目标,我们可以使用一个哈希表(或集合)来记录已经遇到的节点值,逐步遍历链表并删除重复的节点。

具体步骤如下:

  1. 从链表的第一个节点开始遍历,创建一个哈希表来记录已经遇到的节点值。
  2. 如果遇到的节点值不在哈希表中,则将该值添加到哈希表中,并继续遍历。
  3. 如果遇到的节点值已经存在于哈希表中,说明该节点是重复的节点,将其从链表中删除。
  4. 最终返回处理后的链表。

3、代码实现与详细注释

class Solution {
public:
    ListNode* removeDuplicateNodes(ListNode* head) {
        // 边界条件:如果链表为空或只有一个节点,直接返回头节点
        if (head == nullptr || head->next == nullptr) {
            return head;
        }

        // 使用一个哈希表记录已经遇到的节点值
        unordered_map<int, int> hash;
        ListNode* cur = head;  // 从链表的第一个节点开始遍历
        hash[cur->val]++;      // 记录第一个节点的值

        // 开始遍历链表的后续节点
        while (cur->next) {
            ListNode* next = cur->next;  // 记录当前节点的下一个节点

            // 如果下一个节点的值已经在哈希表中出现过,说明是重复节点
            if (hash.count(next->val)) {
                // 删除重复节点:将当前节点的 next 指向下下个节点
                cur->next = next->next;
            } else {
                // 如果下一个节点的值没有出现过,则记录该值
                hash[next->val]++;
                // 移动当前指针到下一个节点
                cur = next;
            }
        }

        // 返回去重后的链表头节点
        return head;
    }
};

4、时间与空间复杂度分析

  • 时间复杂度: O(n),其中 n 为链表的长度。我们只需要遍历链表一次,同时每个节点的值存储或查找在哈希表中的时间是常数级别。
  • 空间复杂度: O(n),因为需要使用哈希表来存储已经访问过的节点值。

这种方法效率较高,适合链表长度较大且包含重复节点的情况。


http://www.kler.cn/a/465643.html

相关文章:

  • 计算机网络常见面试题及解答
  • w139华强北商城二手手机管理系统
  • UDP接收和断线重连代码注入案例
  • Ⅱ.INTRODUCTION TO CUDA C
  • python3GUI--智慧交通监控与管理系统 By:PyQt5
  • MySQL8安装与卸载
  • 【Ubuntu】安装华为的MindSpore
  • 2、pycharm常用快捷命令和配置【持续更新中】
  • Jetpack Compose 学习笔记(一)—— 快速上手
  • 智能边缘计算×软硬件一体化:开启全场景效能革命新征程(企业开发者作品)
  • kafka小实站
  • SASS 简化代码开发的基本方法
  • AcWing练习题:平均数2
  • 肿瘤免疫循环与肿瘤免疫治疗的关系
  • 《Vue3实战教程》39:Vue3无障碍访问
  • 初学stm32 --- FSMC驱动LCD屏
  • XML里预定义的字符实体引用
  • graylog+sidecar通过docker-compose部署并采集SSH登录日志
  • C++中的常见关键字
  • 如何在Golang中实现协程池
  • 靶机系列|VULNHUB|DC-3
  • grouped = df.drop(‘name‘, axis=1).groupby(‘team‘)
  • websocket-sharp:.NET平台上的WebSocket客户端与服务器开源库
  • 医学图像分析工具01:FreeSurfer || Recon -all 全流程MRI皮质表面重建
  • 在Windows计算机上打开 HEIC 文件的 6 种有效方法
  • Servlet中映射与部署