static int x=[](){
std::ios::sync_with_stdio(false);
cin.tie(NULL);
return 0;
}();
class Solution {
public:
string getPermutation(int n, int k) {
string s;
k--;
vector<int> arr(n + 1, 1);
vector<int> num(n + 1, 0);
for (int i = 1; i <= n; i++)
arr[i] = i * arr[i - 1];
// 每次确定一个数
for (int i = n; i >= 1; i--) {
if (s.length() == n - 1) {
int index = 1;
while (num[index]) index++;
s.push_back(index + 48);
break;
}
int tmp = k / arr[i - 1] + 1;
k %= arr[i - 1];
int cnt = 0;
for (int i = 1; i < n + 1; i++) {
if (num[i] == 0)
cnt++;
if (cnt == tmp) {
s.push_back(i + 48);
num[i] = 1;
break;
}
}
}
return s;
}
};
LetCode 60. 第k个排列
猜你喜欢
转载自blog.csdn.net/wbb1997/article/details/81003131
今日推荐
周排行