假设我正在访问图数据结构中的节点。当我访问每个节点时,我会将其添加到“已访问”列表中。需要进行O(1)查找以验证我不会多次访问同一节点。
当然,如果每个节点都有一个关联值,我可以使用常规JavaScript对象(哈希表)来存储我的“访问”列表,但是假设我想知道节点是否可以计算为字符串或不。是否有支持O(1)对象查找的JavaScript数据结构?我怎么能实现一个?
答案 0 :(得分:5)
答案 1 :(得分:0)
要执行O(1)查找,您需要使用哈希集。原生javascript中没有哈希集,但是有一个哈希映射(普通对象)。您可以通过检查对象是否包含密钥来模拟哈希集。您的价值需要实施toString
方法。
var Set = function () {}
Set.prototype.contains = function (v) {
return (v.toString() in this);
}
Set.prototype.add = function (v) {
this[v.toString()] = true;
}
Set.prototype.remove = function (v) {
delete this[v.toString()];
}