在哈希 table 上添加元素
Adding elements on a hash table
我正在阅读 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);
散列table的思想是在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);
我正在阅读 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);
散列table的思想是在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);