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

排列序号

时间:2017-08-07 00:17:40      阅读:156      评论:0      收藏:0      [点我收藏+]

标签:size   keyword   public   ram   long   iter   没有   param   截图   

代码;

 

class Solution {
public:
/**
* @param A an integer array
* @return a long integer
*/
long long permutationIndex(vector<int>& A) {
// Write your code here
// 找出A中每一个位置其后有多少个数比它小
// 然后再相加这些数与位对应的权
int len = A.size();
int c[len];
c[len - 1] = 0;// 最后一个数之后就没有比它小的数了
vector<int> a;
a.push_back(A[len - 1]);
for(int i = len - 2;i >= 0; --i){
auto iter = lower_bound(a.begin(), a.end(), A[i]);
c[i] = iter - a.begin();
a.insert(iter, A[i]);
}
long long ans = 1, fac = 1, cc = 1;
for(int i = len - 2;i >= 0; --i)
ans += (fac*=cc++) * c[i];
return ans;
}
};

截图:

技术分享

 

排列序号

标签:size   keyword   public   ram   long   iter   没有   param   截图   

原文地址:http://www.cnblogs.com/w1500802028/p/7296403.html

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