給出集合 [1,2,3,…,n],其所有元素共有 n! 種排列。
按大小順序列出所有排列情況,並一一標記,當 n = 3 時, 所有排列如下:
「123」
「132」
「213」
「231」
「312」
「321」
給定 n 和 k,返回第 k 個排列
以k=3為例,觀察資料我們可以分成這樣三組資料
(1)「123」 「132」
(2)「213」 「231」
(3)「312」 「321」
我們先確定k在哪一組,顯然k應在第二組(3/2向上取整)
再分為兩組(已經確定以2開頭,此時k = k - 2 * 1 = 1)
(1)「13」
(2)「31」
k/1向上取整得1,要找的在第一組
了解過程以後我們需要尋找規律:(其實就是全排列)
實現**如下
/**
* @param n
* @param k
* @return
*/var
getpermutation
=function
(n, k)
const nums =
;//數字上可取的值
for(
let i =
1; i <= n; i++
)let res ='';
for(
let i = n -
1; i >=
0; i--
)return res;
};
輸出排列的第n個數
華電北風吹 最後修改日期 2015 8 6 輸入 乙個整數n和乙個字串鍊錶 預設鍊錶已經由小到大排序好,例如 1,2,3,4,5,6 這個主要是用來計算排列組合次序的,並不是嚴格的排序,但是是預設的順序也行,例如 a,b,c,1,2,3 輸出 輸入鍊錶從最小的排列 輸入排列預設是最小的 開始的第n個...
第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 ...