LeetCode六月挑战(6.20 )Permutation Sequence LeetCode 60解题方案
Solution
The set [1,2,3,...,*n*]
contains a total of n! unique permutations.
By listing and labeling all of the permutations in order, we get the following sequence for n = 3:
"123"
"132"
"213"
"231"
"312"
"321"
Given n and k, return the kth permutation sequence.
Note:
- Given n will be between 1 and 9 inclusive.
- Given k will be between 1 and n! inclusive.
Example 1:
Input: n = 3, k = 3
Output: "213"
Example 2:
Input: n = 4, k = 9
Output: "2314"
思路
代码
java
class Solution {
public String getPermutation(int n, int k) {
StringBuilder result = new StringBuilder();
List<Integer> number = new ArrayList<>();
int[] fib = new int[n];
int jiec = 1;
fib[0] = 1;
for(int i=1;i<n;i++){
fib[i] = i *fib[i-1];
}
for(int i=1;i<=n;i++)
number.add(i);
k=k-1;
for(int i=n-1;i>=0;i--){
int x = k/fib[i];
System.out.println("x = "+x);
result.append(number.get(x));
k = k % fib[i];
number.remove(x);
}
return result.toString();
}
}