下述C++代码的空间复杂度是多少?判断为O(t²)是否正确?
代码空间复杂度判断解答
int t; cin >> t; string *teacher; teacher = new string[int(pow(t, 2))];
我认为上述代码的空间复杂度是O(t²),请问该判断是否正确?
你的判断完全正确,推导过程如下:
- 代码中普通变量
t、指针变量teacher本身的内存占用为固定常量,空间复杂度为O(1),不会随输入t的规模发生变化 - 整段代码的核心动态内存开销来自
new string[int(pow(t, 2))]语句,这里直接申请了和t²数量相等的string类型对象数组,内存占用规模和t的平方呈线性正相关 - 渐近空间复杂度取随输入规模增长的最高量级,因此这段代码的整体空间复杂度为O(t²)
内容的提问来源于stack exchange,提问作者Migo101
相关产品推荐
相关产品推荐

