(1)排列
class Solution {
private:
string res="";
int count=0;
public:
void helper(string s,int l,int r,int k) {
if(count>k) return;
if(l==r) {
count++;
if(count==k) res=s;
return;
}
for(int i=l;i<=r;i++) {
swap(s[i],s[l]);
helper(s,l+1,r,k);
}
return;
}
string getPermutation(int n, int k) {
string str="";
for(int i=1;i<n+1;i++) str.push_back('0'+i);
helper(str,0,str.length()-1,k);
return res;
}
};

本文介绍了一个C++类实现,该类能够通过递归方法找到从1到n的所有数字的第k个排列。通过交换字符位置的方法实现了全排列的生成,并在过程中检查当前排列是否为目标排列。
1661

被折叠的 条评论
为什么被折叠?



