LeetCode - Permutation Sequence

思路

推导一下,先推出第一个,然后第二个,以此类推

代码

class Solution {
public:
    string getPermutation(int n, int k) {
        vector<int> num, fac;
        for (int i = 0; i < n; i++) num.push_back(i + 1);
        fac.push_back(1);
        for (int i = 1; i < n; i++) fac.push_back(fac[i - 1] * i);
        string ans;
        for (int i = n - 1; i >= 0; i--)
        {
            int pos = (k - 1) / fac[i];
            ans += (num[pos] + '0');
            num.erase(num.begin() + pos);
            k -= pos * fac[i];
        }
        return ans;
    }
};

Powered by Jekyll and Theme by solid