C LeetCode 60 第k個排列

2021-08-21 06:58:49 字數 1096 閱讀 4667

給出集合[1,2,3,…,n],其所有元素共有n!種排列。

按大小順序列出所有排列情況,並一一標記,當n = 3時, 所有排列如下:

"123"

"132"

"213"

"231"

"312"

"321"

給定nk,返回第k個排列。

說明:

給定n的範圍是[1, 9]

給定k的範圍是[1, n!]

示例 1:

輸入: n = 3, k = 3

輸出: 「213」

示例 2:

輸入: n = 4, k = 9

輸出: 「2314」

這道題可以考慮從高位開始逐位確定該位應該為哪個數字。比如n=4,k=3時,

最高位為1則最多可以形成3*2*1=6種組合,大於k,所以最高位確定為1,第二位為2時最多有2*1=2種組合,小於k,而第二位為3的時候,則最多有2*2*1=4位,大於k,所以第二位為3,此時還需要形成3%2=1種,第三位為2時,只有一種,故第三位是2,最後一位是4

class solution 

else

if(k==1)

else

}return res;

}};

LeetCode Python 60 第k個排列

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

60 第k個排列

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

60 第k個排列

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