【发布时间】:2014-05-15 23:24:26
【问题描述】:
我正在使用两个数组来完成检查array1 中的值是否存在于array2 中的任务。如果是这样,请删除 array1 中的内容并继续检查直到 array1 为空。如果它们不存在,则从函数中返回。我正在使用 Javascript
我使用经典的两个 for 循环来实现它,运行时间为 o(n*2)。我想知道是否有任何其他有效的方法可以使用 javascript 支持的任何其他数据结构来执行此操作。下面是我目前的实现
for(var j = 0; j < tempArray.length; j++){
for(var k = 0; k < this.probsSolved.length; k++){
if(tempArray[j] == this.probsSolved[k]){
tempArray.splice(j,1);
if(tempArray.length <= 0){
this.updateAchievements(achID);
this.storage.set(achKey,1);
return;
}
}
}
问题是我必须每 5 秒调用一次执行此操作的函数,这对我来说看起来非常低效。
有人可以建议一种比上述更好的算法或数据结构,我可以使用吗?如果可以,我将如何使用。
【问题讨论】:
-
数组中元素的类型是什么?数组是否按任何特定顺序排列?
-
建议的字典方法是一种很好的方法。另一种方法是对两个列表进行排序,然后按顺序遍历它们,就像您进行标准合并一样。也就是说,如果您的列表不是很大,那么您的“低效”方法将足够快。
-
我的列表包含整数值,它们最多包含 50 个值,但问题是我必须每 5 秒运行一次此操作。因此搜索实际上每 5 秒完成一次,直到第一个列表为空。不过我会查字典
-
对于最大大小为 50 的数组,您说的是最多 2,500 次迭代。将花费的时间将以毫秒为单位。每五秒执行一次完全没有问题。
-
谢谢.. 有道理!
标签: javascript algorithm data-structures