Code:
public class Solution {public static string getpermutation (int n, int k) {string result = ""; if (n = = 1) return result + 1; int factorial_n = factorial (n-1); boolean[] isused = new Boolean[n]; Return Adddigit (Factorial_n, K-1, n-1, isused); } public static int factorial (int n) {if (n = = 1 | | n = = 0) return 1; Return n*factorial (n-1); } public static String adddigit (int factorial, int k, int n, boolean[] isused) {int times = k/factorial; int remain = k%factorial; int i = 0; int count = 0; for (; i < isused.length; i++) {if (!isused[i]) count++; if (count = = times+1) break; } Isused[i] = true; if (n = = 0) return string.valueof (i+1); if (n = = 1) {String s = i+1+adddigit (1, remain, n-1, isused); System.out.println ("n = = 1:" + (i+1)); return s; } String s = I+1+adddigit (factorial/n, remain, n-1, isused); return s; }}
Jan 19-permutation Sequence; backtracking; factorial;