60. Permutation Sequence (String)
Input: n = 3, k = 3
Output: "213"Input: n = 4, k = 9
Output: "2314"Last updated
Input: n = 3, k = 3
Output: "213"Input: n = 4, k = 9
Output: "2314"Last updated
class Solution {
public String getPermutation(int n, int k) {
if (n == 0) return "";
int[] sum = new int[n];
sum[0] = 1;
for (int i = 1; i < n; i++) {
sum[i] = i * sum[i - 1];
}
StringBuilder sb = new StringBuilder();
k = k - 1; //因为index从0开始
List<Integer> digits = new LinkedList<Integer>();
//把所有数存在digits里,后面需要用index取用
for (int i = 1; i <= n; i++) digits.add(i);
for (int i = n; i > 0; i--) {
int digit = k / sum[i - 1]; //找到第一位在哪里
sb.append(digits.get(digit));
digits.remove(digit); //这个数不能再用了,去掉
k = k % sum[i - 1]; //k变成在剩下的所有排列中找位置
}
return sb.toString();
}
}