为什么这段代码的运行时间是O(n ^ 2)。(正如破解编码面试书所写的那样)。以及如何改进它
public String makeSentence(String[] words) {
StringBuffer sentence = new StringBuffer();
for (String w : words) sentence.append(w);
return sentence.toString();
}
答案 0 :(得分:1)
n
= words
数组
for
循环至少意味着O(n)
在for
循环中,sentence.append(w)
的每个实例都应该是"常量"因为sentence
是StringBuffer
。
执行常量n
次意味着您总共得到O(n)
答案 1 :(得分:0)
要查看的关键行是for (String w : words) sentence.append(w);
在Java中,String附加是O(n)操作。因为append在for
循环内,所以整个方法是O(n ^ 2)。