[LeetCode]60. Permutation Sequence
题目描述
思路
k/(n-1)! 取整确定当前位子的数,
k = k%(n-1)确定下一位子的k,
详见代码
代码
class Solution {
public:
string getPermutation(int n, int k) {
string res = "";
vector<int> n_factorial(n, 1), nums(n, 1);
int index;
for (int i = 1; i < n; ++i) {
n_factorial[i] = i * n_factorial[i - 1];
nums[i] = i + 1;
}
while (nums.size()) {
--n;
index = floor(k / n_factorial[n]);
index = k % n_factorial[n] == 0 ? index - 1 : index;
k = k % n_factorial[n] == 0 ? n_factorial[n] : k % n_factorial[n];
res += to_string(nums[index]);
nums.erase(nums.begin() + index);
}
return res;
}
};