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

leetcode Permutation Sequence

2015-10-20 15:35 429 查看


Permutation Sequence

My Submissions

Question
Solution

Total Accepted: 40746 Total
Submissions: 174549 Difficulty: Medium

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.

Show Tags

Show Similar Problems

Have you met this question in a real interview?
Yes

No

class Solution {
public:
string searchNum(vector<bool> &signal, int count, string res)
{
char temp;
int i = 1;
for (i; i < signal.size() && count >= 0; i++)
{
if (signal[i] == false)
count--;
}
signal[i-1] = true;
temp = i-1 + 48;
res += temp;
return res;
}
string getPermutation(int n, int k)
{
vector<int> njie;
int count = 0;
njie.push_back(1);
vector<bool> nsignal;
nsignal.push_back(false);
for (int i = 1; i <= n; i++)
{
njie.push_back(njie[i - 1] * i);
nsignal.push_back(false);
}

string result = "";
k--;//此处特别特别重要,因为所有的都是从0开始计算,所以k要减1
int q = n - 1;
while (q>=0)
{
count = k / njie[q];
k = k%njie[q];
q--;
result = searchNum(nsignal, count, result);
}
return result;

}

};
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: