leetcode 74: Permutation Sequence
Permutation SequenceMar
28 '12
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 (ie, 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.
public class Solution {
public String getPermutation(int n, int k) {
// Start typing your Java solution below
// DO NOT write main() function
if(k<0) return new String();
k = k-1;
LinkedList<Character> can = new LinkedList<Character>();
for(int i=0; i<n;i++) {
can.add( (char)(i+'1') );
}
char[] res = new char[n];
int i=0;
int p=0;
while(i<n) {
int f = getFactorial(n-i-1);
p = k/f;
res[i++] = can.get(p);
can.remove(p);
k = k % f;
}
return new String(res);
}
private int getFactorial(int n) {
if(n==0) return 1;
int x = n;
while(--n>0) x *= n;
return x;
}
}
浙公网安备 33010602011771号