重复未分类的链表

时间:2016-01-18 12:42:54

标签: linked-list duplicates hashtable

我发现此功能可以删除链接列表中的重复值:

 public static void deleteDups (LinkedListNode n){
  Hashtable table = new Hashtable();
 LinkedListNode previous = null;
 while(n!=null){
  if(table.containsKey(n.data)){
      previous.next = n.next;
  } else {
      table.put(n.data, true);
      previous = n;
  }
  n = n.next;
}
}

为什么更好地将元素复制到哈希表中而不是复制到另一个结构(如不同的链表)? 感谢

1 个答案:

答案 0 :(得分:2)

因为在链表中检查项的存在是O(N)操作,但是对于哈希表它是O(1)。表现就是原因。

if(table.containsKey(n.data))

这是检查当前项目之前的位置(重复),并且当通过链接列表实现时该操作成本很高。