Problem Description:
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"
Code:
class Solution {
int cnt = 0;
String res;
public String getPermutation(int n, int k) {
String tmp;
boolean[] flag = new boolean[n+1];
for(int i = 1; i <= n; i++) {
flag[i] = true;
tmp = String.valueOf(i);
func(tmp, flag, i, n, k);
flag[i] = false;
tmp = "";
}
return res;
}
void func(String tmp, boolean[] flag, int cur, int n, int k) {
if(tmp.length() == n) {
cnt++;
if(cnt == k) {
res = tmp;
}
return;
}
for(int i = 1; i <= n; i++) {
if(!flag[i]) {
flag[i] = true;
String ans = tmp;
tmp += String.valueOf(i);
func(tmp, flag, i, n, k);
flag[i] = false;
tmp = ans;
}
}
}
}