【问题标题】:duplicate unsorted linked list重复的未排序链表
【发布时间】:2016-04-23 15:30:28
【问题描述】:

我发现这个函数可以删除链表中的重复值:

 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;
}
}

为什么最好将元素复制到哈希表中而不是复制到另一个结构中,例如不同的链表? 谢谢

【问题讨论】:

    标签: linked-list duplicates hashtable


    【解决方案1】:

    因为检查项目是否存在是链表中的O(N) 操作,而对于哈希表则为O(1)。性能是原因。

    if(table.containsKey(n.data))
    

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-07-12
      • 1970-01-01
      • 2020-06-09
      • 2022-01-07
      • 1970-01-01
      • 2015-09-24
      • 2018-12-06
      • 1970-01-01
      相关资源
      最近更新 更多