Permutation Sequence
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"
Note: Given n will be between 1 and 9 inclusive.
-----------------------------------------------------------------------------
Factorial. Lay out permutations, you will see the pattern
将k设为0-base
class Solution { public: int getFactorial(int n) { int rt = 1; for (int i = 1; i <= n; i++) { rt *= i; } return rt; } int getNextNumber(vector<bool> &nums, int section) { for (int i = 0; i < nums.size(); i++) { if (section == 0 && nums[i] == false) { nums[i] = true; return i; } if (nums[i] == false) { section--; } } } string getPermutation(int n, int k) { int factorial = getFactorial(n); string rt = ""; vector<bool> nums(n,false); k--; for (int i = n; i > 0; i--) { factorial /= i; int section = k / factorial; k = k % factorial; char c = getNextNumber(nums,section) + '1'; rt += c; } return rt; } };
No comments:
Post a Comment