1.题目
给定 n 和 k,求123..n
组成的排列中的第 k 个排列。1 ≤ n ≤ 9
对于 n = 3
, 所有的排列如下:
123
132
213
231
312
321
如果
k = 4
, 第4个排列为,
231
.
2.算法
public String getPermutation(int n, int k)
{
if (n <= 0)
{
return "";
}
k--;
StringBuilder res = new StringBuilder();
int factorial = 1;
ArrayList<Integer> nums = new ArrayList<Integer>();
for (int i = 2; i < n; i++)
{
factorial *= i;
}
for (int i = 1; i <= n; i++)
{
nums.add(i);
}
int round = n - 1;
while (round >= 0)
{
int index = k / factorial;
k = k % factorial;
res.append(nums.get(index));
nums.remove(index);
if (round > 0)
{
factorial /= round;
}
round--;
}
return res.toString();
}