Permutation Sequence Posted on 2018-09-20 Descriptionhttps://leetcode.com/problems/permutation-sequence/description/ Solution12345678910111213141516171819202122232425262728293031323334353637383940class Solution {public: string getPermutation(int n, int k) { vector<int> total = this->sumTotalList(n); vector<int> remains_digits; string ret(n, 'a'); for (int i = 1; i <= n; i++){ remains_digits.push_back(i); } int index = n - 1; int remain = 0; int count = n; while (index >= 0){ int target_index = count * (k - 1) / total[index]; int target = remains_digits[target_index]; remains_digits.erase(remains_digits.begin() + target_index); ret[n - 1 - index] = '0' + target; k -= total[index - 1] * target_index; index -= 1; count -= 1; } return ret; } vector<int> sumTotalList(int n) { vector<int> ret(1, 1); if (n == 0 || n == 1) return ret; int index = 2; int sum = 1; while (index <= n){ sum *= index; ret.push_back(sum); index += 1; } return ret; }};