Java - for循环中数组的空间复杂性

时间:2017-07-02 21:17:11

标签: java space-complexity

我知道时间复杂度是O(n)。但是这段代码的空间复杂性是什么?最坏的情况是什么,所需的最大空间量是多少?我的猜测是它是O(1),因为数组已经有一个恒定的空间量,因此空间没有增加。

代码:

public int[] countBits(int num) {
        int[] res = new int[num+1];

        for (int i = 0; i<num+1; i++){
            res[i] = Integer.bitCount(i);
        }

        return res;
    }

1 个答案:

答案 0 :(得分:1)

算法的 空间复杂度空间的输入大小,包括辅助空间和输入使用的空间。

此外,辅助空间是算法使用的临时空间。

在您的示例中,在计算创建数组num所需的存储空间时,会包含输入(传递参数new int[num+1] )。同样,for-loop会更大。

总之,空间复杂度 O(n)以及时间复杂度 O(n)