【題目描述】
Given?n?and?k, return the?k-th permutation sequence.
Notice:n?will be between 1 and 9 inclusive.
給定n和k,求123..n組成的排列中的第k個排列。
【注】1 ≤ n ≤ 9
【題目鏈接】
www.lintcode.com/en/problem/permutation-sequence/
【題目解析】
這道題給了我們n還有k,在數列 1,2,3,... , n構建的全排列中,返回第k個排列。
題目告訴我們:對于n個數可以有n!種排列;那么n-1個數就有(n-1)!種排列。
那么對于n位數來說,如果除去最高位不看,后面的n-1位就有(n-1)!種排列。
所以,還是對于n位數來說,每一個不同的最高位數,后面可以拼接(n-1)!種排列。
所以你就可以看成是按照每組(n-1)!個這樣分組。
利用 k/(n-1)! 可以取得最高位在數列中的index。這樣第k個排列的最高位就能從數列中的index位取得,此時還要把這個數從數列中刪除。
然后,新的k就可以有k%(n-1)!獲得。循環n次即可。
【參考答案】