class Solution {
public:
string getPermutation(int n, int k) {
preFunction(n);
string ret;
for (int i = n; i >= 1; --i) {
int num = k / vec[i - 1];
if (num * vec[i - 1] == k)
num--; // 这一步是关键,容易错
ret += numVec[num] + '0';
int val = *(numVec.begin() + num);
numVec.erase(numVec.begin() + num);
k -= num*vec[i - 1];
}
return ret;
}
void preFunction(const int N) {
vec.push_back(1);
for (int i = 1; i <= N; ++i) {
numVec.push_back(i);
vec.push_back(vec[i - 1] * i);
}
}
private:
vector<int> vec;
vector<int> numVec;
};
leetcode Permutation Sequence
最新推荐文章于 2019-05-17 11:20:47 发布