第k個排列數

2021-06-29 00:51:36 字數 1051 閱讀 2457

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!個排列中,第一位的元素總是(n-1)!一組出現的,也就說如果p = k / (n-1)!,那麼排列的最開始乙個元素一定是nums[p]。

假設有n個元素,第k個permutation是

a1, a2, a3, .....   ..., an

那麼a1是哪乙個數字呢?

那麼這裡,我們把a1去掉,那麼剩下的permutation為

a2, a3, .... .... an, 共計n-1個元素。 n-1個元素共有(n-1)!組排列,那麼這裡就可以知道

設變數k1 = k

a1 = k1 / (n-1)!

同理,a2的值可以推導為

a2 = k2 / (n-2)!

k2 = k1 % (n-1)!

.......

a(n-1) = k(n-1) / 1!

k(n-1) = k(n-2) /2!

an = k(n-1)

class solution 

k--;

string res = "";

for(int i = 0 ; i < n; i++)

return res;

}};

第k個排列

給出集合 1,2,3,n 其所有元素共有 n 種排列。按大小順序列出所有排列情況,並一一標記,當 n 3 時,所有排列如下 123 132 213 231 312 321 給定 n 和 k,返回第 k 個排列。說明 public string getpermutation int n,int k l...

第k個排列

給出集合 1,2,3,n 其所有元素共有 n 種排列。按大小順序列出所有排列情況,並一一標記,當 n 3 時,所有排列如下 123 132 213 231 312 321 給定 n 和 k,返回第 k 個排列。說明 給定 n 的範圍是 1,9 給定 k 的範圍是 1,n 示例 1 輸入 n 3,k ...

第k個排列

給出集合 1,2,3,n 其所有元素共有 n 種排列。按大小順序列出所有排列情況,並一一標記,當 n 3 時,所有排列如下 123 132 213 231 312 321 給定 n 和 k,返回第 k 個排列。說明 給定 n 的範圍是 1,9 給定 k 的範圍是 1,n 示例 1 輸入 n 3,k ...