Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- class Solution {
- public String getPermutation(int n, int k) {
- StringBuilder permutation = new StringBuilder();
- Map<Integer, Integer> numsMap = updateMap(getOrderedNumsUpToN(n));
- for (int i = 0; i < n; i++) {
- int nSize = n - i;
- int s; // section number
- int nFact = factorial(nSize);
- int r = factorial(nSize - 1);
- s = (int) Math.ceil((float) k / r);
- permutation.append(numsMap.get(s));
- numsMap.remove(s);
- List<Integer> values = new ArrayList<Integer>(numsMap.values());
- Collections.sort(values);
- numsMap = updateMap(values);
- k = k - (s - 1) * r;
- }
- return permutation.toString();
- }
- public int factorial(int number) {
- int result = 1;
- for (int factor = 2; factor <= number; factor++) {
- result *= factor;
- }
- return result;
- }
- public List<Integer> getOrderedNumsUpToN(int n) {
- List<Integer> nums = new ArrayList<Integer>();
- for (int i = 1; i <= n; i++) {
- nums.add(i);
- }
- return nums;
- }
- public static Map<Integer, Integer> updateMap(List<Integer> values) {
- Map<Integer, Integer> numsMap = new HashMap<Integer, Integer>();
- for (int i = 1; i <= values.size(); i++) {
- numsMap.put(i, values.get(i - 1));
- }
- return numsMap;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement