LeetCode - Permutation Sequence

Question Definition

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.

Java Solution

public String getPermutation(int n, int k) {
    String res = "";
    int[] f = new int[n];
    f[0] = 1;
    List<String> nums = new LinkedList<>();
    for (int i = 1; i < n; ++i){
        f[i] = f[i - 1] * i;
        nums.add(Integer.toString(i));
    }
    nums.add(Integer.toString(n));
    --k;
    for (int i = n; i >= 1; --i) {
        int j = k / f[i - 1];
        k %= f[i - 1];
        res += nums.get(j);
        nums.remove(j);
    }
    return res;
}

Comments