Skip to content

Commit f7c9e70

Browse files
committed
Add C++ solutions for leetcode 60.
1 parent fbc7830 commit f7c9e70

File tree

3 files changed

+103
-0
lines changed

3 files changed

+103
-0
lines changed
Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,43 @@
1+
#include<vector>
2+
#include<algorithm>
3+
#include<iostream>
4+
#include<string>
5+
#include<cstring> /* 含memset */
6+
using namespace std;
7+
8+
class Solution {
9+
public:
10+
string getPermutation(int n, int k) {
11+
int f[n]; // 记录阶乘 n! 的结果
12+
memset(f, 0, sizeof(f));
13+
f[0] = 1;
14+
for (int i = 1; i < n; i++)
15+
f[i] = i*f[i-1];
16+
vector<int> digits; /* 1 <= n <= 9 */
17+
for (int i = 1; i <= n; i++)
18+
digits.push_back(i);
19+
20+
k--; // 1-indexed -> 0-indexed
21+
string res = "";
22+
for (int i = n - 1; i >= 0; i--)
23+
{
24+
int index = k / f[i];
25+
res.push_back(digits[index] + '0');
26+
digits.erase(digits.begin() + index);
27+
k = k % f[i];
28+
}
29+
return res;
30+
}
31+
};
32+
33+
// Test
34+
int main()
35+
{
36+
Solution sol;
37+
int n = 4;
38+
int k = 9;
39+
auto res = sol.getPermutation(n, k);
40+
cout << res << endl;
41+
42+
return 0;
43+
}
Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
#include<vector>
2+
#include<algorithm>
3+
#include<iostream>
4+
#include<string>
5+
using namespace std;
6+
7+
class Solution {
8+
public:
9+
string getPermutation(int n, int k) {
10+
string s(n, '0');
11+
12+
for (int i = 0; i < n; i++)
13+
s[i] += i + 1;
14+
for (int i = 0; i < k - 1; i++)
15+
next_permutation(s.begin(), s.end());
16+
return s;
17+
}
18+
};
19+
20+
// Test
21+
int main()
22+
{
23+
Solution sol;
24+
int n = 4;
25+
int k = 9;
26+
auto res = sol.getPermutation(n, k);
27+
cout << res << endl;
28+
29+
return 0;
30+
}
Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
#include<vector>
2+
#include<algorithm>
3+
#include<iostream>
4+
#include<string>
5+
using namespace std;
6+
7+
class Solution {
8+
public:
9+
string getPermutation(int n, int k) {
10+
string res;
11+
res.reserve(n);
12+
for (int i = 1; i != n + 1; i++)
13+
res.push_back(i + '0');
14+
while (--k)
15+
next_permutation(res.begin(), res.end());
16+
return res;
17+
}
18+
};
19+
20+
// Test
21+
int main()
22+
{
23+
Solution sol;
24+
int n = 4;
25+
int k = 9;
26+
auto res = sol.getPermutation(n, k);
27+
cout << res << endl;
28+
29+
return 0;
30+
}

0 commit comments

Comments
 (0)