public String getPermutation(int n, int k) {
// 比较难理解: http://blog.csdn.net/linhuanmars/article/details/22028697, http://www.cnblogs.com/springfor/p/3896201.html
if(n==0 ) return null;
StringBuilder res = new StringBuilder();
int fact = 1;
ArrayList<Integer> num = new ArrayList<Integer>();
for(int i=2; i<n; i++){
fact = fact *i;
}
for(int i=1; i<=n; i++){
num.add(i);
}
k = k-1; // the indext in num starting at 0!!!
for(int i=n-1; i>0; i--){
int ind = k/fact; // An = k/(n-1)!
res.append(num.get(ind));
num.remove(ind); // permuataion, therefore no repeated digits
k = k%fact; // k = k % (n-1)!
fact = fact / i;
}
res.append(num.get(0));
return res.toString();
}
}
Permutation Sequence
最新推荐文章于 2018-12-26 13:42:41 发布