Permutation Sequence
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 n and k, return the k_th permutation sequence.
(排列组合结果的第 K 项)
Note:
- Given n will be between 1 and 9 inclusive.
- Given k will be between 1 and n! inclusive.
Example:
1. 找规律
在n=4,k=9时,
- 最高位可以取{1, 2, 3, 4},而每个数重复3!=6次。所以第 k=9 个排列的 s[0] 为{1, 2, 3, 4}中的第 9/6+1=2 个数字,即s[0]=2;
- 同样地,对于以 2 开头的6个数字而言,k=9是其中的第 k’=9%(3!)=3 个。而剩下的数字{1, 3, 4}的重复周期为 2!=2次。所以 s[1] 为{1, 3, 4} 中的第k’/(2!)+1=2个,即 s[1]=3;
- 以此类推,对于以 23 开头的2个数字而言,k=9是其中的第k’’=k’%(2!)=1 个。剩下的数字{1, 4}的重复周期为 1!=1次。所以 s[2]=1;
- 对于以 231 开头的一个数字而言,k=9是其中的第k’’’=k’’/(1!)+1=1 个。所以s[3]=4。
综上所述,按照顺序寻找 n 的全排列中的第 k 个,也是就是不断地对 (n-1)! 取商和余数的过程。这里使用 k-1 来判断是为了方便处理边界条件。具体实现方法如下:
1 | class Solution: |