Permutation Sequence

来源:互联网 发布:无损音乐下载网站知乎 编辑:程序博客网 时间:2024/06/08 18:48

1.题目

给定 nk,求123..n组成的排列中的第 k 个排列。1 ≤ n ≤ 9

对于 n = 3, 所有的排列如下:

123132213231312321
如果 k = 4, 第4个排列为,231.

2.算法

    public String getPermutation(int n, int k)     {        if (n <= 0)        {        return "";        }        k--;        StringBuilder res = new StringBuilder();        int factorial = 1;        ArrayList<Integer> nums = new ArrayList<Integer>();        for (int i = 2; i < n; i++)        {        factorial *= i;        }        for (int i = 1; i  <= n; i++)        {        nums.add(i);        }        int round = n - 1;        while (round >= 0)        {        int index = k / factorial;        k = k % factorial;        res.append(nums.get(index));        nums.remove(index);        if (round > 0)        {        factorial /= round;        }        round--;        }        return res.toString();    }

0 0
原创粉丝点击