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; } }