1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27
| class Solution { public String getPermutation(int n, int k) { int[] factorial = new int[n]; factorial[0] = 1; for (int i = 1; i < factorial.length; i++) { factorial[i] = i * factorial[i - 1]; }
List<Integer> numList = new LinkedList<>(); for (int i = 1; i <= n; i++) { numList.add(i); }
StringBuilder sb = new StringBuilder(); for (int i = n - 1; i >= 0; i--) { int index = k / factorial[i]; if (k % factorial[i] == 0) { index--; } sb.append(numList.remove(index)); k -= index * factorial[i]; }
return sb.toString(); } }
|