LC 60 Permutation Sequence(M)
解题思路
public String getPermutation(int n, int k) {
int[] fact = new int[n+1];
int sum = 1;
List <Integer> num = new ArrayList<Integer>();
fact[0] = 1;
//构造一个 阶乘的列表,和 数字的列表
for(int i = 1; i<=n; i++){
sum = i* sum;
fact[i] = sum;
num.add(i);
}
// 转化为数组下标,
k--;
StringBuilder sb = new StringBuilder();
for(int i = 1; i <= n; i++){
int index = k/fact[n-i];
sb.append(String.valueOf(num.get(index)));
num.remove(index);
k -= index * fact[n-i];
}
return sb.toString();
}Last updated