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(嚇人):) –