[程序员代码面试指南]链表问题-删除无序链表中重复出现的节点
Posted coding-gaga
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了[程序员代码面试指南]链表问题-删除无序链表中重复出现的节点相关的知识,希望对你有一定的参考价值。
题意
如题
题解
使用HashSet。
时间复杂度O(n),额外空间复杂度O(n)。
todo
使用选择排序也可以做。
代码
import java.util.HashSet;
public class Main
public static void main(String args[])
//测试
Node n1=new Node(2);
Node n2=new Node(2);
Node n3=new Node(3);
n1.next=n2;
n2.next=n3;
Node head=n1;
rmRepeat(head);
//测试
Node pNode=head;
while(pNode!=null)
System.out.println(pNode.val);
pNode=pNode.next;
public static void rmRepeat(Node head)
if(head==null)
return;
HashSet<Integer> hashset=new HashSet();
hashset.add(head.val);
Node pre=head;
Node cur=pre.next;
while(cur!=null)
if(hashset.contains(cur.val))
pre.next=cur.next;
else
hashset.add(cur.val);
pre=cur;
cur=cur.next;
以上是关于[程序员代码面试指南]链表问题-删除无序链表中重复出现的节点的主要内容,如果未能解决你的问题,请参考以下文章
[程序员代码面试指南]链表问题-单链表的选择排序(选择排序)
剑指Offer-代码的完整性面试题18.2:删除链表中的重复节点