60. Permutation Sequence

https://leetcode.com/problems/permutation-sequence/discuss/22508/An-iterative-solution-for-reference

 

 

 

 1 class Solution {
 2     List<String> res = new ArrayList<>();
 3     public String getPermutation(int n, int k) {
 4         List<Integer> nums = new ArrayList<>();
 5         for(int i = 1; i <= n; i++) {
 6             nums.add(i);
 7         }
 8         int[] fac = new int[n];
 9         fac[0] = 1;
10         for(int i = 1; i < n; i++) {
11             fac[i] = i * fac[i-1];
12         }
13         StringBuilder res = new StringBuilder();
14         k--; //重要 因为其他的index都是从0开始 因为k--比较好
15         for(int i = n-1; i >= 0; i--) {
16             int index = k / fac[i];
17             k = k % fac[i];
18             res.append(nums.get(index));
19             nums.remove(index);
20         }
21         return res.toString();
22         
23     }   
24 }

 

posted @ 2018-09-13 11:08  jasoncool1  阅读(108)  评论(0编辑  收藏  举报