我正在阅读Grokking算法,它为我提供了一个无法在Javascript上进行复制的哈希映射的示例。这很简单,我唯一不知道的是如何添加的值。 “已投票”变量上的ID
var canVote = function(id) {
var voted = {};
for(let i = 0; i < id.length; i++) {
if(id in voted) {
console.log("ID already voted!");
} else {
voted[id] = id;
console.log("Voted successufully!")
}
}
}
var id = [10, 20, 20]
canVote(id);
答案 0 :(得分:2)
哈希表的想法是查找O(1)
中是否存在值。但是,如果您遍历n
元素的数组,您显然将最终进行n
常数操作,结果是O(n)
。
此外,您使用的逻辑在循环迭代中也有缺陷。我在下面的代码中对其进行了修改。请检查。
var canVote = function(id) {
var voted = {};
id.forEach(voteId=>{
if(voted[voteId]){
console.log("ID already voted!");
}else{
voted[voteId] = voteId;
console.log("Voted successufully!")
}
})
}
var id = [10, 20, 20]
canVote(id);