我写了这个排列算法。你能帮我理解它的时空复杂性吗。
public static List<String> permutation(String str) {
List<String> result = new ArrayList<>();
if (str.length() == 1) {
result.add(str);
return result;
} else {
for (char c : str.toCharArray()) {
List<String> subPermList = permutation(str.replace(c + "", ""));
for (String substr : subPermList) {
result.add(c + substr);
}
}
return result;
}
}
1条答案
按热度按时间4xrmg8kj1#
我将只集中在这个答案的时间复杂性。第一件事是写下
T(n)
:这种递推关系的解是
Θ(n² * n!)
.... 这明显比
Θ(n * n!)
,在生成所有排列列表的最佳实现中得到。