【发布时间】:2019-01-06 03:38:09
【问题描述】:
我在 java 中返回了下面的代码,以生成可能的 n 位二进制表示。
public List<String> binaryRepresenation(int n){
List<String> list = new ArrayList<>();
if(n>0){
permuation(n, list, "");
}
return list;
}
private void permuation(int n, List<String> list, String str){
if(n==0){
list.add(str);
}else{
permuation(n-1, list, str+"0");
permuation(n-1, list, str+"1");
}
}
对于 n=3,它产生 001 001 010 011 100 101 110 111 个组合。 总的来说,这个函数产生 2^n 种可能的表示。
可以说时间复杂度是n * 2^n
对于基本情况,该方法被调用了 2^n 次。为了达到每个基本情况,它会调用排列方法最多 n 次。
所以总体上界时间复杂度是 n*2^n?如果我错了,请纠正我。我根据该线程Time Complexity of Permutations of a String 中讨论的字符串排列时间复杂度得出了这个结论。非常感谢您的帮助。
【问题讨论】:
-
时间复杂度:2^n
标签: java algorithm time time-complexity