2
StringBuilder sb = new StringBuilder();
for(int i = 0; i < n; i++){
sb.append('a');
}
のようなものを使用することを考慮して、コードO(N^2)
またはO(N)
の効率ですか?
StringBuilder sb = new StringBuilder();
for(int i = 0; i < n; i++){
sb.append('a');
}
のようなものを使用することを考慮して、コードO(N^2)
またはO(N)
の効率ですか?
これはO(N)であり、それはあなたがどのくらいの大きさの費用を要することを意味するn
変数です。
@ebyrob、まったく... –
[この単純なコードの複雑さは何ですか?](https://stackoverflow.com/questions/7156122/what-is-the-complexity-of-this-simple-piece-of-コード) – erip
容量を事前に割り当てることができます。例えば: 'StringBuilder sb = new StringBuilder(n);'これはほとんどの動的サイズの配列やリストに当てはまります。事前割り振りをしないと、毎回のログ(n)サイクル、またはnサイクルごとに発生する可能性のある自動再割り当てに依存しています。あなたを 'O(n * log(n))'や 'O(n^2)'にまで減速させます。 – ebyrob
['StringUtils.repeat( 'a'、n);'](https://commons.apache.org/proper/commons-lang/apidocs/org/apache/commons/lang3/StringUtils。 html#repeat-char-int-)は、私がそれを記述する方法です。 –