首页 > 其他 > 详细

60. Permutation Sequence

时间:2016-03-05 10:14:48      阅读:122      评论:0      收藏:0      [点我收藏+]

道理我都懂,但是还是调了n久,写出来发现哪哪都没问题,最后发现是k没有--

都是泪

 

 1     public String getPermutation(int n, int k) {
 2         if(n == 0 || k == 0) {
 3             return "";
 4         }
 5         k--;
 6         List<Integer> digits = new ArrayList<Integer>();
 7         for(int i = 1; i <= n; i++) {
 8             digits.add(i);
 9         }
10         StringBuilder sb = new StringBuilder();
11         int fac = factory(n-1);
12         for(int i = n - 1; i > 0; i--) {
13             int current = k / fac;
14             k %= fac;
15             sb.append(digits.get(current));
16             digits.remove(current);
17             fac /= i;
18         }
19         sb.append(digits.get(0));
20         return sb.toString();
21     }
22     
23     private static int factory(int n) {
24         int sum = 1;
25         for(int i = 1; i <= n; i++) {
26             sum *= i;
27         }
28         return sum;
29     }

Kkkkkkk提前减一!!!

60. Permutation Sequence

原文:http://www.cnblogs.com/warmland/p/5244123.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!