Leetcode 60
Permutation Sequence
- Problem Description:
返回给定n个数的第k个序列(按字典序排列)
具体的题目信息:
https://leetcode.com/problems/permutation-sequence/description/ - Example:
- Solution:
class Solution {
public:
string getPermutation(int n, int k) {
string str = "";
vector<int> num;
int mod = 1;
for (int i = 1; i <= n; i++) {
num.push_back(i);
mod *= i; //计算n!
}
k--;
for (int i = 0; i < n; i++) {
mod /= n-i; //序列的第一位有(n-1)!中排列,接下来(n-2)!以此类推
int index = k/mod; //计算第一位在num中的位置
k %= mod; //得到下一位
stringstream ss;
ss << num[index];
str += ss.str(); //将数字转换为字符串
num.erase(num.begin()+index); //删去已排列的数字
}
return str;
}
};