leetcode 60 Permutation Sequence
k/(n-1)!=a...b,如果b为0,则结果为第a-1个数字的最大的一个;如果b不为0,则为第a个数字的第rem个。
class Solution { public: string getPermutation(int n, int k) { set<int> s; for(int i=1;i<=n;++i) s.insert(i); return helper(n,k,s); } string helper(int n,int k,set<int>& s) { if(n==0) return ""; int sum=1; for(int i=1;i<n;++i) sum*=i; int div=k/sum,rem=k%sum; auto ite=s.begin(); while(div) { ++ite;--div; } string str; if(!rem) { --ite; str=to_string(*ite); s.erase(ite); for(auto cite=s.rbegin();cite!=s.rend();++cite) {str+=to_string(*cite);} return str; } str=to_string(*ite); s.erase(ite); str+=helper(n-1,rem,s); return str; } };