您的位置:首页 > 产品设计 > UI/UE

LeetCode Permutation Sequence(求排列中的第k个排列是什么)

2016-07-25 20:04 423 查看
思路:使用阶乘,f(n) =  f(n -1) * n,在确定第i个数是,用k/f(n - 1 - i)

代码如下:

public class Solution
{

public String getPermutation(int n, int k) {
int[] fac = new int[n + 1];
fac[0] = 1;
for (int i = 1; i <= n; i++) {
fac[i] = fac[i - 1] * i;
}
List<Integer> num = new ArrayList<>();
StringBuilder sb = new StringBuilder();

for (int i = 1; i<= n; i++) num.add(i);

k--;
for (int i = 1; i <= n; i++) {
int index = k / fac[n - i];
sb.append(String.valueOf(num.get(index)));
num.remove(index);
k -= index * fac[n - i];
}

return sb.toString();
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: