Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angular/33.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 返回数组列表的算法的空间复杂度是多少?_Java_Algorithm_Data Structures_Big O_Space Complexity - Fatal编程技术网

Java 返回数组列表的算法的空间复杂度是多少?

Java 返回数组列表的算法的空间复杂度是多少?,java,algorithm,data-structures,big-o,space-complexity,Java,Algorithm,Data Structures,Big O,Space Complexity,我在分析一个螺旋矩阵。该解决方案要求输入矩阵并返回数组列表。这是选择的解决方案: class Solution { public List < Integer > spiralOrder(int[][] matrix) { List ans = new ArrayList(); if (matrix.length == 0) return ans; int r1 = 0, r2 = matrix.length - 1; int c1 =

我在分析一个螺旋矩阵。该解决方案要求输入矩阵并返回数组列表。这是选择的解决方案:

class Solution {
public List < Integer > spiralOrder(int[][] matrix) {
    List ans = new ArrayList();
    if (matrix.length == 0)
        return ans;
    int r1 = 0, r2 = matrix.length - 1;
    int c1 = 0, c2 = matrix[0].length - 1;
    while (r1 <= r2 && c1 <= c2) {
        for (int c = c1; c <= c2; c++) ans.add(matrix[r1][c]);
        for (int r = r1 + 1; r <= r2; r++) ans.add(matrix[r][c2]);
        if (r1 < r2 && c1 < c2) {
            for (int c = c2 - 1; c > c1; c--) ans.add(matrix[r2][c]);
            for (int r = r2; r > r1; r--) ans.add(matrix[r][c1]);
        }
        r1++;
        r2--;
        c1++;
        c2--;
    }
    return ans;
}
}

我在这里查阅了空间复杂性,但我不知道如何将这些信息应用到这个案例中

我已经看了评论的讨论部分

有人说它在空间上,因为解决方案创建了一个数组列表

有人说它是O1空间,因为这个问题需要返回数组列表。所以这个空间已经被考虑进去了


哪个是正确的?

O1表示此算法所需的内存量不取决于输入的大小。显然不是这样,每次一个内部for循环迭代时,都会向数组列表中添加一个元素。因此,由于该算法有OMN运行时,它也有OMN内存复杂性,其中矩阵的大小为M x N.

肯定是开的 由于列表ans的大小取决于矩阵的大小,我们可以说O1不是答案。这是因为O1表示一个恒定的空间,这里的情况并非如此。 列表ans的确切大小为n=宽度*高度,这将允许它包含矩阵中的所有项。 如果我们的矩阵的大小加倍,那么我们的ans的大小也将加倍,因为项目的数量已经加倍。这表明矩阵的大小和ans之间存在线性关系。我们可以说我们的空间是复杂的。