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"
找出第n个字典排序的数。
生成字典排序 直到第n个数的方法如下:
public String getPermutation(int n, int k) {
StringBuffer tmp = new StringBuffer();
for(int i=1;i<=n;i++) {
tmp.append(i);
}
int index=2;
char[] res = tmp.toString().toCharArray();
while(index<=k) {
res = getNext(res);
index++;
}
return new String(res);
}
//字典排序的思想 就是从末尾第二个数开始查询 再其后面是否有比它大的数据 如果有则进行替换 然后对其后面的值进行从小到大排序
public char[] getNext(char[] res) {
for (int index = res.length - 2; index >= 0; index--) {
for (int j = res.length - 1; j > index; j--) {
if (res[j] > res[index]) {
char temp = res[j];
res[j] = res[index];
res[index] = temp;
Arrays.sort(res, index + 1, res.length);
return res;
}
}
}
return res;
}