题目地址:Permutation Sequence
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”
大致意思:给定1-9的n,求第k(k<n的阶乘)个有序的排列。
答案借鉴:https://leetcode.com/problems/permutation-sequence/discuss/22507/%22Explain-like-I'm-five%22-Java-Solution-in-O(n)
class Solution {
class Solution {
public String getPermutation(int n, int k) {
List<Integer> container = new ArrayList<Integer>();
int factorial =1;
StringBuffer res = new StringBuffer();
//求出n的阶乘
for(int i=1;i<n+1;i++){
factorial = factorial*i;
container.add(i);
}
int index = k-1,div=n;
for(int j =0;j<n;j++,div--){
factorial/=div;
if(index==-1){
index=0;
}
res.append(container.remove(index/factorial));
index = index%factorial;
}
return res.toString();
}
}
}