如何解决简单函数的大O
我正在学习数据结构,对这个游戏还很陌生。我知道运行 n 次迭代的单个循环的时间复杂度为 O(n)。但是如果我在 for 循环中使用 splice
,它的时间复杂度是 O(n2) 吗?我很肯定它是 O(n2) 但想确定一下。
这是我正在处理的示例代码:
var createTargetArray = function(nums,index) {
let target = []
for (let i=0; i< index.length; i++){
let idx = index[i]
target.splice(idx,nums[i])
}
return target
};
解决方法
你说得对。 拼接方法的最坏情况应该是 O(n)。 该调用发生在 foreach 循环 O(n) 的迭代中; 所以整个脚本的大 o 符号是 O(n^2)
,由于大 O 表示法是询问您的函数需要多少次迭代才能对您的数组执行 f(x) 作为输入,因此当您遍历所有元素时,O(n) 的一般时间复杂度。然而,在 JavaScript 中使用 .splice() 函数在理想情况下也具有 O(n) 的时间复杂度,因此当您将 O(n) 放入另一个 O(n) 时,它实际上变为 O(n^2)。作为一个很好的经验法则,您可以考虑嵌套 O(n) 将 n 的幂增加 1 。例如,如果您要循环使用三重嵌套循环对数组的每个元素执行 1 次操作,它将变为 O(n^3),依此类推。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。