10分钟就写完了,另外10分钟用来调试。一个k的处理就搞去起码8分钟。。
The set [1,2,3,…,n]
contains a total of n! unique permutations.
By listing and labeling all of the permutations in order,
We get the following sequence (ie, for n = 3):
"123"
"132"
"213"
"231"
"312"
"321"
Given n and k, return the kth permutation sequence.
Note: Given n will be between 1 and 9 inclusive.
public class Solution {
public String getPermutation(int n, int k) {
if (k < 1 || k > fac(n)) {
return "";
}
if (n == 1) {
if (k == 1) {
return "1";
} else {
return "";
}
}
List<Integer> ints = new ArrayList<Integer>();
for (int i = 1; i <= n; i++) {
ints.add(i);
}
String result = "";
k = k - 1;
for (int i = n - 1; i >= 0; i--) {
int idx = k / fac(i);
result += ints.get(idx);
ints.remove(idx);
k = k % fac(i);
}
return result;
}
private int fac(int n) {
int result = 1;
for (int i = 2; i <= n; i++) {
result *= i;
}
return result;
}
}