class Solution {
//对于n, 有n!种排列, 则可以通过计算k 与 n! 的倍数来判断当前的数字, 比如n=3, k=3, 此时第一个数字肯定为2, 因为第一个数字为1的排列种数为2个
public String getPermutation(int n, int k) {
int[] nums = new int[n-1];
List<Integer> list = new LinkedList<>();
if(n > 1){
nums[0] = 1;
}
for (int i = 1; i < n-1; i++){ //存储n!, 用于判断
nums[i] = nums[i-1]*(i+1);
}
for(int i = 0; i < n; i++){
list.add(i+1);
}
StringBuilder sb = new StringBuilder();
k--;
for(int i = n-1; i > 0;i--){
int index = k/ nums[i-1];
k = k % nums[i-1];
sb.append(list.get(index));
list.remove(index);
}
sb.append(list.get(0));
return sb.toString();
}
}
60.第k个排列
©著作权归作者所有,转载或内容合作请联系作者
- 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
- 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
- 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
推荐阅读更多精彩内容
- 阳春三月、万物复苏,在这个春暖花开季节里,威海若维信息科技有限公司(简称若维教育)、若维俱乐部(哈工大)和威高讯通...
- 工作 工作方面尽量站在架构师角度去考虑问题。本周一个京东电话面试,通过这样几个问题来查看我的能力是否符合优秀高...