Syntax 帮助破译此代码及其';s运行时 int[]A=新的int[n][]; 对于(int i=0;i

Syntax 帮助破译此代码及其';s运行时 int[]A=新的int[n][]; 对于(int i=0;i,syntax,big-o,Syntax,Big O,如果您不将数组看作二维数组(我们通常认为是矩形的),而是一个int数组数组,那么它可能会对您有所帮助。外部数组包含n个int数组,每个int数组的大小可能不同 A[i]=new int[n]实际上是在数组A的第i个元素中放置一个大小为n的数组。A[i]。length是存储在A中位置i处的数组的长度 您对O(n^2)和嵌套for循环的直觉在这里通常是正确的。看起来您的算法不完整 顶部初始化2D数组,使每个偶数顶级数组元素的长度为n,而每个奇数顶级数组元素的长度为1 在下半部分,外循环迭代所有顶级元

如果您不将数组看作二维数组(我们通常认为是矩形的),而是一个int数组数组,那么它可能会对您有所帮助。外部数组包含n个int数组,每个int数组的大小可能不同

A[i]=new int[n]
实际上是在数组A的第i个元素中放置一个大小为n的数组。
A[i]。length
是存储在A中位置i处的数组的长度


您对O(n^2)和嵌套for循环的直觉在这里通常是正确的。

看起来您的算法不完整

顶部初始化2D数组,使每个偶数顶级数组元素的长度为n,而每个奇数顶级数组元素的长度为1

在下半部分,外循环迭代所有顶级元素。有n个这样的元素。对于每个元素,内循环对子元素求和。这些元素中交替有n个和1个


如果这是Java,那么默认情况下,每个int[]数组元素的内容都将是0。如果是这样,那么最终的和将是0。并且您将花费O(n*(n/2+n))=O(n^2)来获得该答案。

您应该使用它所用的语言对其进行标记。
int[][] A = new int [n][];
for (int i=0; i<n; i++) {
    if (i % 2 == 0) // i is a multiple of 2
        A[i] = new int [n];
    else
        A[i] = new int [1];
}

for (int i=0; i<A.length; i++)
    for (int j=0; j<A[i].length; j++)
        sum = sum + A[i][j];