0
点赞
收藏
分享

微信扫一扫

LeetCode-60. Permutation Sequence

勇敢乌龟 2022-08-10 阅读 61


The set ​​[1,2,3,...,n]​​ contains a total of n! unique permutations.

By listing and labeling all of the permutations in order, we get the following sequence for n = 3:

  1. ​"123"​
  2. ​"132"​
  3. ​"213"​
  4. ​"231"​
  5. ​"312"​
  6. ​"321"​

Given n and k, return the kth permutation sequence.

Note:

  • Givennwill be between 1 and 9 inclusive.
  • Givenkwill be between 1 andn! inclusive.

Example 1:

Input: n = 3, k = 3
Output: "213"

Example 2:

Input: n = 4, k = 9
Output: "2314"

题解:

每次获取当前的首数字,直到最后一个数字。

class Solution {
public:
string getPermutation(int n, int k) {
vector<int> total(n + 1, 1);
vector<char> num;
string res;
for (int i = 1; i <= n; i++) {
num.push_back(i + 48);
}
for (int i = 2; i <= n; i++) {
total[i] = total[i - 1] * i;
}
for (int i = n; i > 0; i--) {
int temp = (k - 1) / total[i - 1];
res += num[temp];
num.erase(num.begin() + temp);
k -= temp * total[i - 1];
}
return res;
}
};

 

举报

相关推荐

0 条评论