首页 > 其他分享 >链表--删除无序链表中重复的节点

链表--删除无序链表中重复的节点

时间:2022-12-18 00:44:12浏览次数:45  
标签:Node head cur -- next 链表 new 节点

题目:给定一个无顺序单链表的头节点head,删除其中值重复的元素

思路:利用哈希表。
  生成一个哈希表,因为头节点是没有必要去删除的节点,所以首先将头节点放入哈希表;

  从头结点的下一个节点开始往后遍历节点,如果当前cur指向的节点的值与哈希表中存在的节点值相同,测删除该节点,将最近没有删除的节点的地址与删除节点的下一个节点

  的地址连接起来(pre->next = cur->next);如果与哈希表中的节点不存在值相等的condition,将cur的节点放入哈希表中,即pre = cur;

废话不说,看代码:

package com.ly;

import java.util.HashSet;

public class removeRepl {
    public static void main(String[] args){
        Node a = new Node(1 ,"1");
        Node b = new Node(2,"2");
        a.next = b;
        Node c = new Node(2,"3");
        b.next = c;
        Node d = new Node(3,"4");
        c.next = d;
        Node e = new Node(3,"5");
        d.next = e;
        
        System.out.println(func(a));


    }

    public static Node func(Node head){
        if(head == null){
            return null;
        }
        HashSet<Integer> set = new HashSet<Integer>();
        Node pre = head;
        Node cur = head.next;
        set.add(head.value);
        while (cur != null){
            if(set.contains(cur.value)){
                pre.next = cur.next;
            }else {
                set.add(cur.value);
                pre = cur;
            }
            cur = cur.next;
        }
        return head;
    }
}

运行结果:

 

标签:Node,head,cur,--,next,链表,new,节点
From: https://www.cnblogs.com/99kol/p/16989887.html

相关文章

  • 快速排序
    时间开销:O(logn),空间开销:0(原地分治)importjava.util.Scanner;publicclassMain{publicstaticvoidmain(String[]args){Scannerscanner=newScanner(......
  • linux 安装运行redis与Spring连接配置,10分钟快速入门
    linux是一方面是开源免费的,另一面其长时间运行的可靠性远高于其他系统,所以是目前国内绝大多数公司部署项目的首选。其中部署项目往往需要配套诸如Mysql、maven、redis等等......
  • python中实现保留几位小数的几种方式
    方式一:format()format(1.235,'.2f')Out[1]:'1.24'format(1.2,'.2f')Out[2]:'1.20'format(1.2,'.3f')Out[3]:'1.200'返回值为字符串类型,末位会自动补0......
  • telnet、wirshark等工具介绍
    1. telnet工具  1.1介绍       (1)telnet是一个命令行运行的客户端TCP通信工具      (2)可以接收数据、也可发送数据,windows和linux上都能用......
  • Excel实现批量插⼊SQL语句
    新建一个Excel数据表将Excel要放置数据的列的单元格格式转化为“文本”格式拷贝数据到Exccl中,这一步要在第二步之后将放置SQL语句的单元格设置为“常规”在放置SQL语......
  • Kubernetes(k8s) kubectl rollout status常用命令
    kubectl在$HOME/.kube目录中查找一个名为config的配置文件。可以通过设置KUBECONFIG环境变量或设置--kubeconfig参数来指定其它kubeconfig文件。本文主要介绍K......
  • 【python/pycharm】哆啦A梦
    #!/usr/bin/envpython3#-*-coding:utf-8-*-#@Author:dong#@Date:2018-07-0519:37:42#@Env:python3.6#@Github:https://github.com/PerpetualSmilef......
  • 了解模块、导入模块、as定义别名
    一、模块Python模块(Module),是一个python文件,以.py结尾,包含了python对象定义和python语句。模块能定义函数、类和变量,模块里也能包含可执行的代码。1.1导入模块......
  • vlc播放阿里云盘视频,可通过此方法解决网页无法读取视频内嵌字幕的问题
    1、在点击视频文件前,打开f12获取阿里云盘视频链接,复制download_url:  2、拼接vlc播放命令:./vlc.exe--http-referrer="https://www.aliyundrive.com/""第一步中的do......
  • Skywalking控制台浅使用记录
    搭建并启动好skywalkingOAT及WEBAPP服务后,对项目进行集成,以某一服务为例,启动参数中添加如下内容:-javaagent:D:\Server\apache-skywalking-java-agent-8.13.0\skywalkin......