首页 > 解决方案 > 找出链表中的重复元素

问题描述

void deleteDups(LinkedListNode n)
  HashSet<Integer> set = new HashSet<Integer>();
  LinkedListNode previous = null;  
  while(n!=null){
    if(set.contains(n.data)){
      previous.next = n.next;  
    }else {
      set.add(n.data);
      previous = n;
    }
    n = n.next;
  }
}

此代码片段用于删除链表中的重复元素。

在破解编码面试时,我一直在研究链表概念。由于只有代码片段可用,我无法理解流程以及第一行中的 LinkedListNode n 实际来自何处。我可以理解他们将整个链表作为参数传递,如果有人能告诉我该 LinkedListNode 的代码将是什么,那将会很有帮助。先感谢您。

标签: linked-list

解决方案


LinkedList 遍历:给定列表的头部(起始节点),您可以遍历整个列表。每个 currentnode 都会有 nextnode 的信息,可以通过 current.next 访问。

在您的代码 LinkedListNode 'n' 是需要删除重复项的列表的起始节点(头)


推荐阅读