0
这个算法递归计算排列的时间复杂度应该是O(n!*n)
,但我并不是100%确定空间复杂度。这个排列算法的空间复杂度是多少?
有n
递归,以及递归所需的最大空间是n
(每种排列* n!
(排列数)的空间。是algorithm`的O空间复杂度(N!* N^2)?
static List<String> permutations(String word) {
if (word.length() == 1)
return Arrays.asList(word);
String firstCharacter = word.substring(0, 1);
String rest = word.substring(1);
List<String> permutationsOfRest = permutations(rest);
List<String> permutations = new ArrayList<String>(); //or hashset if I don’t want duplicates
for (String permutationOfRest : permutationsOfRest) {
for (int i = 0; i <= permutationOfRest.length(); i++) {
permutations.add(permutationOfRest.substring(0, i) + firstCharacter + permutationOfRest.substring(i));
}
}
return permutations;
}
任何与n!是O(吓人):) –