【发布时间】:2019-09-02 14:01:10
【问题描述】:
我的问题是,我在这段代码中没有最快的性能。 我有 30 个测试,我必须用这段代码解决,但我只解决了 28 个,直到它抛出错误,因为它需要很长时间。
这是我的示例输入:
queryType: ["insert", "insert", "addToValue", "addToKey", "get"]
query: [[1,2], [2,3], [2], [1], [3]]
If queryType[i] === "insert" -> Add at query[i][0] value query[i][1].
If queryType[i] === "addToValue" -> Add query[i][0] to every value.
If queryType[i] === "addToKey" -> Add offset.
If queryType[i] === "get" -> Add query[i][0] to result value.
这是我当前的代码:
function testHashMap(queryType, query) {
let hash = {};
let result = 0;
let offset = 0;
let len = queryType.length;
for (let i = 0; i < len; ++i) {
let querys = query[i][0];
switch (queryType[i]) {
case "insert":
hash[querys] = query[i][1];
break;
case "addToValue":
for (let key in hash) {
hash[key] += querys;
}
break;
case "addToKey":
offset += querys;
break;
case "get":
result += hash[querys - offset];
break;
}
}
return result;
}
有人知道如何提高此功能的速度吗? 感谢您的宝贵时间!
【问题讨论】:
-
addToValue耗时过长。这个练习的重点是弄清楚如何在不实际添加每个值的情况下产生相同的效果。
标签: javascript algorithm performance dictionary