【发布时间】:2017-04-28 11:56:35
【问题描述】:
String joinWords (String[] words){
String sentence = "";
for(String w: words){
sentence = sentence + w;
}
return sentence;
}
这本书报道这是O(xn^2)
这是我的工作:
1 次调用最初创建 String sentence
有 N 次调用(由于 for 循环的 N 次调用)
那么有N次调用分配sentence = sentence + w
最后一次发送return sentence;
总计:
这给出 O(N^2 + 2) = O(N^2)
问题 (1) 我的工作是否正确?
(2) 他们从哪里得到O(xn^2) 中的x 的额外因子?
谢谢!
【问题讨论】:
-
只有 O(n)!
-
"那么有 N 个调用来赋值 sentence = sentence + w" true,但是为什么这些 N 需要与另一个 N 相乘呢?
-
什么抽象机器模型/运行时环境/编程语言?
sentence = sentence + w;是否一直在努力? -
x 是单词的平均长度,但时间复杂度是 O((xn)^2)。可以通过 StringBuilder 优化为 O(xn):stackoverflow.com/q/7156122/6809386
标签: algorithm