集合[1,2,3,…,n]总共包含n!独特的排列。通过按顺序列出和标记所有排列,给定n和k,返回第k个置换序列
public class PermutationSequence
{
public PermutationSequence(){}
public String getPermutation(int n, int k)
{
String result= "";
int index= n;
List<Integer> list= new ArrayList<>();
while(index > 0)
{
int temp= 0;
int interval= 1;
for(int i=1;i<index;i++)
{interval *= i;}
if(k%interval == 0)
{
temp= k/interval;
k= interval;
}
else
{
temp= k/interval + 1;
k= k%interval;
}
int temp_index=1;
for(int i=1;i<=n;i++)
{
if(!list.contains(i))
{
if(temp_index < temp)
{temp_index++;}
else
{
result= result + (char)(i+48);
list.add(i);
break;
}
}
}
index--;
}
return result;
}
}