Description
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 for n = 3:
"123"
"132"
"213"
"231"
"312"
"321"Given
nandk, return thek-thpermutation sequence.Note:
- Given n will be between 1 and 9 inclusive.
- Given k will be between 1 and n! inclusive.
Example 1:
1 2Input: n = 3, k = 3 Output: "213"Example 2:
1 2Input: n = 4, k = 9 Output: "2314"
假设存在长度为n的数组:[1,2,3,...,n],输出第k个排列。
Solution

一个长度为n的数组,总共有n!种排列。假设第一个数字固定后,剩余(n-1)!种排列。
上图中的字典序树可以更直观的看出,
在n=4:[1,2,3,4]中,
“第零层”包含4!=24个叶子,
第一层包含3!=6个叶子,
第二层包含2!=2个叶子…
假设现在要查找第k=9个排列(第九个叶子),第一层应该经过第⌈9/3!⌉ 个分支,即ceil(k/(n-1)!)。
由此公式,可以依次求每层分支序号。
比如k=9,依次经过:
- ⌈9 / 3!⌉:- 2
- ⌈9-3!*(2-1) / 2!⌉:- 2
- [9-3!*(2-1)-2!*(2-1) / 1!]:- 1
- 1
通过序号:2,2,1,1所经过的分支,可以得到结果:2314
|  |  |