60. Permutation Sequence

来源:互联网 发布:java监听jar包加入 编辑:程序博客网 时间:2024/05/01 13:24

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):

  1. "123"
  2. "132"
  3. "213"
  4. "231"
  5. "312"
  6. "321"

Given n and k, return the kth permutation sequence.

Note: Given n will be between 1 and 9 inclusive.

Solution O(n ^ 2)  Remove elements from an array is O(n)

Explanation https://leetcode.com/discuss/42700/explain-like-im-five-java-solution-in-o-n 

public String getPermutation(int n, int k) {        int[] factorial = new int [n + 1];        factorial[0] = 1;        for(int i = 1; i <= n; i++){            factorial[i] = i * factorial[i - 1];        }                List<Integer> array = new ArrayList<Integer>(n);        for(int i = 1; i <= n; i++){            array.add(i);        }                k--;        StringBuilder sb = new StringBuilder();        for(int i = 1; i <= n; i++){            int index = k / factorial[n - i];            sb.append(array.get(index));            array.remove(index);            k %= factorial[n - i];        }        return sb.toString();    }


0 0