public class LT60{
public static String getPermutation(int n, int k) {
LinkedList<Integer> list = new LinkedList<Integer>();
for(int i = 1 ; i <= n ; i++){
list.add(i);
}
return getNextRange(list, k -1);
}
public static String getNextRange(LinkedList<Integer> list , int k){
String result = "";
if(list ==null || list.size() == 0){
return result;
}
//求总的排列数
int total = 1;
for (int i = 1 ; i <= list.size() ; i++) {
total = total * i;
}
int every = total / list.size();
int range = k / every;
int other = k % every;
Integer temp = list.get(range);
list.remove(list.get(range));
result = temp + getNextRange(list, other);
return result;
}
}根据结果集的特点,根据n的值逐个求解第k个排列的每一位数字
LEETCODE 60. 第k个排列
最新推荐文章于 2024-04-26 16:57:38 发布
本文介绍了一种求解给定整数n和k时找到第k个全排列的算法实现。通过递归方法和链表操作,该算法能够有效地找出指定位置的全排列结果。
928

被折叠的 条评论
为什么被折叠?



