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 ...