思路:
1、int index=k/dp[i];迭代找出它是属于nums数组中的以第几个元素开始的全排列;
k=k%dp[i];是以index为开始的 第k个全排列;
class Solution {
public:
string getPermutation(int n, int k)
{
string result="";
if(n<=0||k<=0)
return result;
vector<int>nums={1,2,3,4,5,6,7,8,9};
vector<int>dp(n+1,1);
for(int i=1;i<=n;i++)//求阶乘;
dp[i]=i*dp[i-1];
k--;//因为下标从0开始;所以第k个 也就对应第k-1;
for(int i=n;i>0;i--)
{
int index=k/dp[i-1];//求出第一个数字在nums中的下标是几;
k%=dp[i-1];//更新k的值;迭代一次;
//result+=nums[index]+'0';
result.push_back('0'+nums[index]);//string也可以通过迭代器访问;感觉跟vector差不多欸;’
nums.erase(nums.begin()+index);
}
return result;
}
};