krahets/hello-algo

/docs/chapter_hashing/hash_map.md 里的表 元素查询效率对比是不是写错了

cmjzzx opened this issue · 4 comments

数组 链表 哈希表
查找元素 $O(n)$ $O(n)$ $O(1)$
添加元素 $O(1)$ $O(1)$ $O(1)$
删除元素 $O(n)$ $O(n)$ $O(1)$

数组的添加元素时间复杂度应该是 $O(n)$、链表的删除元素的时间复杂度应该是 $O(1)$ 才对?

应该是处于与哈希表对比的考虑出发,添加元素和删除元素的概念和数组 vs 链表中不太一样
文中也说明了这里添加元素和删除元素的含义。

添加元素:仅需将元素添加至数组(链表)的尾部即可
删除元素:需要先查询到元素,再从数组(链表)中删除

相对于哈希表
添加元素在数组中等价于把k-v键值对以pair/struct的方式存进去,添加到尾部即可。链表同。
删除元素在数组中等价于找到对应的k-v键值对删除,查找就用到 $O(n)$。链表同。

把问题改为 用数组/链表实现哈希表,添加/删除的复杂度是多少? 这样更容易理解。

把问题改为 用数组/链表实现哈希表,添加/删除的复杂度是多少? 这样更容易理解。

确实,这样描述的话,就没问题了,感谢耐心解答🙏