[Leetcode]#60 Permutation Sequence

来源:互联网 发布:nginx根据url跳转 编辑:程序博客网 时间:2024/05/16 07:58

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);    }};
0 0
原创粉丝点击