首页 > 代码库 > 第k个排列
第k个排列
给定 n 和 k,求123..n
组成的排列中的第 k 个排列。
注意事项
1 ≤ n ≤ 9
样例
对于 n = 3
, 所有的排列如下:
123132213231312321
如果 k = 4
, 第4个排列为,231
.
1 public class PaiLieK 2 { 3 public String getPermutation(int n, int k) 4 { 5 List<Integer> list = new ArrayList<>(); 6 List<Integer> list1 = new ArrayList<>(); 7 for(int i = 1; i <= n; i++) 8 { 9 list.add(i);10 }11 12 boolean has = true;13 first:14 for(int i = 0; i < Math.pow(10,n);i++)15 {16 for(int j = 0; j < list.size(); j++)17 {18 if(!(i+"").contains(list.get(j)+""))19 {20 has = false;21 continue ;22 }23 }24 if(has&&list.size() == getDigits(i))25 {26 list1.add(i);27 }28 has = true;29 }30 Integer integer=list1.get(k-1);31 return String.valueOf(integer);32 }33 34 35 public int getDigits(int i)36 {37 int count = 0;38 while(i >0)39 {40 count++;41 i /=10;42 }43 return count;44 }45 @Test46 public void testGetDigits()47 {48 System.out.println(getDigits(198));49 getDigits(198);50 }51 @Test52 public void testGetPermutation()53 {54 String permutation = getPermutation(3, 4);55 System.out.println(permutation);56 }57 58 }
第k个排列
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。