您的位置:首页 > 产品设计 > UI/UE

[Leetcode]#60 Permutation Sequence

2015-09-02 07:04 489 查看
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 (ie, for n = 3):

"123"
"132"
"213"
"231"
"312"
"321"


Given n and k, return the kth permutation sequence.

Note: Given n will be between 1 and 9 inclusive.

//#60 Permutation Sequence
//4ms 28.74%
class Solution {
public:
string getPermutation(int n, int k)
{
string result;
if(k > getFactorial(n)) return result;
vector<int> nums(n, 0);
for(int i=0; i<n; i++)
{
nums[i] = i+1;
}

for(int i=0; i<n; i++)
//determine the corresponding item one by one
{
//cout << "Current session is " << n-i << endl;
//cout << "k = " << k << endl;
int insert_num = (k-1) / getFactorial(n-i-1);
//cout << "insert_num = " << insert_num << endl;
if(insert_num > 0)
{
result.push_back( nums[insert_num] + '0' );
//cout << "inserting " << nums[insert_num] << " into string\n";
nums.erase(nums.begin()+insert_num);
k = k - insert_num * getFactorial(n-i-1);
}
else
{
result.push_back( nums[0] + '0' );
nums.erase(nums.begin());
}
}

return result;
}

int getFactorial(int n)
{
if(n==1 || n==0) return 1;
else return n*getFactorial(n-1);
}
};
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  leetcode string