[LeetCode]60. Permutation Sequence求全排列第k个
2024-10-19 11:44:46
/*
n个数有n!个排列,第k个排列,是以第(k-1)/(n-1)!个数开头的集合中第(k-1)%(n-1)!个数
*/
public String getPermutation(int n, int k) {
k--;
List<Integer> list = new ArrayList<>();
StringBuilder res = new StringBuilder();
int count =1;
//以每个数字开头的集合有多少中排列
for (int i = 2; i <= n -1; i++) {
count*=i;
}
//记录哪些数字还没用
for (int i = 1; i <=n ; i++) {
list.add(i);
}
//回合数,也就是小集合的size
int round = n-1;
while (round>=0)
{
int num = list.get(k/count);
res.append(num);
list.remove(k/count);
if (round>0)
{
k = k%count;
count/=round;
}
round--;
}
return res.toString();
}
最新文章
- Struts2入门(六)——国际化
- 深入理解Java:String
- myeclipse如何设置字体?
- 庞巴迪TCMS学习笔记之一(IEC 61131-3函数)
- Android之NetworkOnMainThreadException异常
- Delphi动态创建组件,并释放内存
- 最短路径算法——Dijkstra,Bellman-Ford,Floyd-Warshall,Johnson
- (中等) POJ 2948 Martian Mining,DP。
- [国嵌攻略][061][2440LCD驱动设计]
- 将python2代码转为python3
- unittest 出报告 并配合 jenkins,发现有用例错误,但是构建没出现红点 的解决方法
- luogu P1445 [Violet]嘤F♂A
- RDD、DataFrame、Dataset三者三者之间转换
- 2018面向对象程序设计(Java)第8周学习指导及要求
- Oracle 密码失灵
- 分布式唯一id生成器的想法
- codeforces1111 简单题【DE】简要题解
- 【AtCoder Regular Contest 080E】Young Maids [堆][线段树]
- laravel 数据库操作
- js中的cookie使用和vue-cookie的使用