hiho 60. Permutation Sequence

来源:互联网 发布:盐城大数据产业园 编辑:程序博客网 时间:2024/05/01 20:05

问题

https://leetcode.com/problems/permutation-sequence/

解法

复杂度o(n^2)

class Solution {public:    string getPermutation(int n, int k) {        bool flag[n+1];        int f = 1;        for (int i=1; i<=n; ++i)        {            f*= i;            flag[i] = true;        }        string ret(n, '0');        for (int i=0; i<n; ++i)        {            f /= (n-i);            int reverse = n- i -1;            int v;            for (int j=reverse; j>=0; --j)                if (j*f < k)// 第j大数 前面有j *((now-1)!) 个数, 找到最大的j                {                    v = j;                    break;                }            k-= v*f;            int s = -1;            for (int j=1; j<= n; ++j)//找第v大数。                if (flag[j])                {                    ++s;                    if (s== v)                    {                        ret[i] += j;                        flag[j] = false;                        break;                    }                }        }        return ret;    }};
0 0
原创粉丝点击