我发现此功能可以删除链接列表中的重复值:
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;
}
}
为什么更好地将元素复制到哈希表中而不是复制到另一个结构(如不同的链表)? 感谢
答案 0 :(得分:2)
因为在链表中检查项的存在是O(N)
操作,但是对于哈希表它是O(1)
。表现就是原因。
if(table.containsKey(n.data))
这是检查当前项目之前的位置(重复),并且当通过链接列表实现时该操作成本很高。