給出集合 [1,2,3,…,n],其全部元素共有 n! 種排列。app
按大小順序列出全部排列狀況,並一一標記,當 n = 3 時, 全部排列以下:ui
給定 n 和 k,返回第 k 個排列。spa
說明:.net
示例 1:code
輸入: n = 3, k = 3
輸出: "213"
複製代碼
示例 2:blog
輸入: n = 4, k = 9
輸出: "2314"
class Solution {
public String getPermutation(int n, int k) {
int[] f = new int[ n + 1 ];
f[ 0 ] = 1;
List< Integer > list = new ArrayList<>();
for( int i = 1; i<= n ; i++ ){
f[ i ] = i * f[ i - 1 ];
list.add( i );
}
StringBuilder sb = new StringBuilder();
for( int i = 1; i <= n ; i++ ){
int index = k / f[ n - i ] ;
if( k % f[ n - i ] != 0 ){
index++;
}
sb.append( list.get( index - 1 ) + "");
list.remove( index - 1 );
k = k - (index - 1 ) * f[ n - i ];
}
return sb.toString();
}
}
複製代碼
解題: 轉載自 blog.csdn.net/sinat_35261…rem