码迷,mamicode.com
首页 > 其他好文 > 详细

leetcode:Permutation Sequence

时间:2015-08-25 19:44:18      阅读:183      评论:0      收藏:0      [点我收藏+]

标签:leetcode

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”
Given n and k, return the kth permutation sequence.

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

class Solution {
public:
    string getPermutation(int n, int k) {
        int pTable[10] = { 1 };
        for (int i = 1; i <= 9; i++){
            pTable[i] = i * pTable[i - 1];
        }
        string result;
        vector<char> numSet{ ‘1‘, ‘2‘, ‘3‘, ‘4‘, ‘5‘, ‘6‘, ‘7‘, ‘8‘, ‘9‘ };
        while (n > 0){
            int temp = (k - 1) / pTable[n - 1];
            result += numSet[temp];
            numSet.erase(numSet.begin() + temp);
            k = k - temp * pTable[n - 1];
            n--;
        }
        return result;
    }
};
/*
In this program, pTable refers to permutation table and numSet refers to a set of numbers from 1 to 9. 
Before while loop, we need to initialize pTable and numSet, which is trivial.

In while loop, we do these following things.
1 calculate which number we will use.
2 remove that number from numSet.
3 recalculate k.
4 n--.

Finally, we return result.
*/

版权声明:本文为博主原创文章,未经博主允许不得转载。

leetcode:Permutation Sequence

标签:leetcode

原文地址:http://blog.csdn.net/lmingyin5/article/details/47980283

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!