码迷,mamicode.com
首页 > 其他好文 > 详细

2015美团网 哈工大 第k个排列

时间:2014-09-15 21:12:19      阅读:275      评论:0      收藏:0      [点我收藏+]

标签:style   blog   http   color   io   os   java   ar   for   

bubuko.com,布布扣

 

leetcode 上的Permutation Sequence 下面是可执行代码

 1 2 3   

 1 3 2

2 1 3

2 3 1

3 1 2

3 2 1

以1 开头 123,132,共2!个数

2 开头  213,231

3开头  312, 321

如果给你弟k个,能求出它位于以谁开头不?只要求出它位于第几个2!个,总体思路就是这个

 

 

 2 
 3 import java.util.ArrayList;
 4 
 5 public class Main {
 6     //求N的阶乘
 7     public static int fic(int n)
 8     {
 9         int res=1;
10         for(int i=1;i<=n;i++)
11         {
12             res=res*i;
13         }
14         return res;
15     }
16         
17     
18     public static String getPermutation(int n, int k) {
19         int r=fic(n);
20         if(k>r) return null;
21         ArrayList<Integer> arr=new ArrayList<Integer>();
22         for(int i=1;i<=n;i++)
23         {
24             arr.add(i);
25         }
26         
27          //形成 1,2,3,4,5,6,7 的列表
28         //
29         
30         
31         k--;
32         
33        StringBuffer sbf=new StringBuffer();
34         for(int i=n;i>=1;i--) //因为排列共有n个,所以我们不断从链表中删除一个,加入string中,最后一个直接加在最后面
35         {
36             r=r/i;  
37             int t=k/r;//选择删除的位置
38             sbf.append(arr.remove(t));
39             k=k%r;
40             
41             
42             
43        
44         }
45        
46         return sbf.toString();
47         
48     }
49     public static void main(String args[])
50     {
51         
52             System.out.println(getPermutation(2, 2));
53         
54         
55         
56     }
57 }

 

2015美团网 哈工大 第k个排列

标签:style   blog   http   color   io   os   java   ar   for   

原文地址:http://www.cnblogs.com/hansongjiang/p/3973545.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!