排列序号

给出一个不含重复数字的排列,求这些数字的所有排列按字典序排序后该排列的编号。其中,编号从1开始。

样例

例如,排列[1,2,4]是第1个排列。

class Solution {
public:
    /**
     * @param A an integer array
     * @return a long integer
     */
    long long permutationIndex(vector<int>& A) {
        // Write your code here
        long long result = 1;
        int n = A.size();
        long long factor = 1;
        long long base = 1;
        for (int i = n-1; i >= 0; i--)
        {
            base *= n-i;
            factor = base;

            for (int j = i-1; j >= 0; j--)
            {
                if (A[i] < A[j])
                {
                    result += factor;
                }
                factor *= n-j;
            }
        }

        return result;
    }
};


你可能感兴趣的:(排列序号)