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.
Thinking, using the lexicographic method, and http://blog.csdn.net/mlweixiao/article/details/38897499
public class Solution {private void nextPermutation(int[] num) {int i;int cur = -1;int temp;// find the last increase sequencefor (i = num.length - 1; i >= 1; i--) {if (num[i] > num[i - 1]) {cur = i - 1;break;}}// if the increase sequence exists,// swap the cur and the last one(bigger than it)if (cur != -1) {for (i = num.length - 1; i > cur; i--) {if (num[i] > num[cur]) {temp = num[cur];num[cur] = num[i];num[i] = temp;break;}}}for (i = cur + 1; 2 * i <= cur + num.length - 1; i++) {temp = num[i];num[i] = num[num.length - i + cur];num[num.length - i + cur] = temp;}} public String getPermutation(int n, int k) { int [] temp=new int[n]; StringBuffer s=new StringBuffer(""); for(int i=0;i<n;i++){ temp[i]=i+1; } for(int i=1;i<k;i++){ nextPermutation(temp); } for(int i=0;i<n;i++){ s.append(temp[i]); } return s.toString(); }}
Leetcode 59 permutation sequence