我知道时间复杂度是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;
}
答案 0 :(得分:1)
此外,辅助空间是算法使用的临时空间。
在您的示例中,在计算创建数组num
所需的存储空间时,会包含输入(传递参数new int[num+1]
)。同样,for-loop
会更大。
总之,空间复杂度 O(n)以及时间复杂度 O(n)。