給出集合[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
輸出: "2314"
以每個數字開頭的全排列有(n-1)! 種。我們先將1-n這些數存到乙個陣列cc中,然後通過c=(k-1)/(n-1)!確定當前k個數,是以哪乙個數字c+1開頭的,從陣列中取出該數,加到字串裡,並且在陣列中刪掉這個數(因為該數已經用過了,接下來我們只能從剩下的數中取)。
這時已經解決掉了c*(n-1)! 個數,還剩下k-c*(n-1)!個數,作為新的k,繼續用陣列中的數來進行填充,直到把所有的數都填完。
class solution
string getpermutation(int n, int k)
while(n)
return s;
}};
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...
60 第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 ...
60 第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 ...