<p>The set <code>[1, 2, 3, ...,&nbsp;n]</code> contains a total of <code>n!</code> unique permutations.</p>

<p>By listing and labeling all of the permutations in order, we get the following sequence for <code>n = 3</code>:</p>

<ol>
	<li><code>&quot;123&quot;</code></li>
	<li><code>&quot;132&quot;</code></li>
	<li><code>&quot;213&quot;</code></li>
	<li><code>&quot;231&quot;</code></li>
	<li><code>&quot;312&quot;</code></li>
	<li><code>&quot;321&quot;</code></li>
</ol>

<p>Given <code>n</code> and <code>k</code>, return the <code>k<sup>th</sup></code> permutation sequence.</p>

<p>&nbsp;</p>
<p><strong class="example">Example 1:</strong></p>
<pre><strong>Input:</strong> n = 3, k = 3
<strong>Output:</strong> "213"
</pre><p><strong class="example">Example 2:</strong></p>
<pre><strong>Input:</strong> n = 4, k = 9
<strong>Output:</strong> "2314"
</pre><p><strong class="example">Example 3:</strong></p>
<pre><strong>Input:</strong> n = 3, k = 1
<strong>Output:</strong> "123"
</pre>
<p>&nbsp;</p>
<p><strong>Constraints:</strong></p>

<ul>
	<li><code>1 &lt;= n &lt;= 9</code></li>
	<li><code>1 &lt;= k &lt;= n!</code></li>
</ul>

class Solution {
public:
    int rep(int i,vector<int>& nums){
        int index=i+1;
        int min=INT_MAX;
        for(int j=index;j<nums.size();j++){
            if(nums[j]-nums[i]>=0 && nums[j]-nums[i]<min){
                min=nums[j]-nums[i];index=j;}
        }return index;
    }
    void permutation(vector<int>& nums, int k){
        if(k==1  || nums.size()==1) return;
        int i=nums.size()-2;
        while(i>=1 && nums[i]>nums[i+1]){
            i--;
        }int t1=rep(i,nums);
        int t2=nums[t1];
        nums[t1]=nums[i];
        nums[i]=t2;
        i++;
        sort(nums.begin()+i,nums.end());
        permutation(nums,k-1);
    }
    string getPermutation(int n, int k) {
        string s;
        vector<int> nums;
        for(int i=1;i<=n;i++) nums.push_back(i);
        permutation(nums,k);
        for(int i=0;i<nums.size();i++){
            s+='0'+nums[i];
        }
        return s;
    }
};
8700