【发布时间】:2020-09-08 17:19:51
【问题描述】:
谁能帮我确定以下代码的时间复杂度?
背景:这是HackerRank algorithm problem,其中编辑部分列出了时间复杂度为 O(n^2) 的解决方案,但我认为它的时间复杂度为 O(n)。
我相信它的 O(n),因为我们只使用一个循环来遍历二维数组,而不是使用嵌套循环,并且只在数组上循环一次。
我是对的还是我遗漏了什么?
解决方案
//arr is a 2 dimensional array containing an equal number of rows and columns
function diagonalDifference(arr) {
let diff = 0;
const length = arr.length - 1;
for (let i = 0; i < arr.length; i++) {
diff += arr[i][i] - arr[i][length - i];
}
return Math.abs(diff);
}
问题
给定一个方阵(AKA 2D Array),计算其对角线之和之间的绝对差。
例如方阵arr如下所示:
1 2 3 4 5 6 9 8 9
从左到右的对角线 = 1 + 5 + 9 = 15。从右到左的对角线 = 3 + 5 + 9 = 17。它们的绝对差是 |15 - 17| = 2。
【问题讨论】:
标签: javascript arrays algorithm multidimensional-array