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.
题意:在给定数字n的全排列中找到第k个字符串,并返回。
关键点:1)设num=(k-1)/factorial,factorial是1至n-1的乘积。可以知道第一个数就是从1到n中第num+1大的数,然后将reminder=(k-1)%factorial作为下一轮的k,这时求num不再需要让k-1。
2)按照上述方式不断的求下一轮的数字,将其添加到返回字符串s的结尾处,并将已经添加的数字置为0,这个时候寻找第num+1大的数时要记得忽略掉之前已经添加的数。
3)如此循环往复,直到n=0.
class Solution { public: string getPermutation(int n, int k) { if(n==1) return "1"; string s=""; int *a=new int[n]; for(int i=0;i