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):
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) { String ret = new String(); if(0 == n) return ret; StringBuilder sb = new StringBuilder(); ArrayListeArr = new ArrayList (); for(int i = 1; i < n+1; ++i){ eArr.add(i); } int[] pArr = new int[n+1]; pArr[1] = 1; for(int i = 2; i < n+1; ++i){ pArr[i] = pArr[i-1]*i; } // Error: i>=0. pArr[0] stored 0. division by 0 error. for(int i = n - 1 ; i>=1; --i){ int pos = (k - 1) / pArr[i]; sb.append(eArr.get(pos)); eArr.remove(pos); k -= (pos) * pArr[i]; } sb.append(eArr.get(0)); return sb.toString(); } }
No comments:
Post a Comment