如果我有一个算法,只需将输入整数转换为其二进制表示形式并存储结果,该算法的空间复杂度是多少?
我最初假设所需的空间与数字的二进制表示形式中的位数成正比。这将给出 O(logn) 空间复杂度,因为用二进制表示整数 n 所需的位数大致为 log(2)n。
但是,我最近考虑到输入将被限制在固定范围内,例如 32 位有符号整数为 2^31 - 1。在这种情况下,无论输入大小如何,二进制表示的长度上限为 32 位的固定长度,因为输入整数被限制在 32 位以内。
那么,在给定二进制字符串长度的固定上限的情况下,存储整数的二进制表示的空间复杂度因此是常数 / O(1) 的结论是否正确?
渐近复杂度分析假设输入可以采用任意大的尺寸。一旦对输入大小设置上限,渐近复杂度的概念就不再适用。
当你将输入限制在32位整数的范围内时,你是对的,空间消耗也有上限,所以空间复杂度是O(1)。不可能是其他任何东西,因为不存在可以任意大的 𝑛。