排列序号II-LintCode
2017-09-01 08:40
351 查看
给出一个可能包含重复数字的排列,求这些数字的所有排列按字典序排序后该排列在其中的编号。编号从1开始。
样例:
给出排列[1, 4, 2, 2],其编号为3。
样例:
给出排列[1, 4, 2, 2],其编号为3。
#ifndef C198_H #define C198_H #include<iostream> #include<vector> #include<algorithm> #include<map> using namespace std; class Solution { public: /** * @param A an integer array * @return a long integer */ long long permutationIndexII(vector<int>& A) { // Write your code here int len = A.size(); if (len <= 0) return 0; vector<int> v = A; map<int, int> dup; long long count=1; long long dupnum = 1; for (int k = len-1; k >=0; --k) { if (dup.find(A[k])!=dup.end()) { dup[A[k]]++; dupnum *= dup[A[k]]; } else { dup[A[k]] = 1; } int num = 0; for (int j = k+ 1; j < A.size(); j++) { if (A[j] < A[k]) { num++; } } count += num * Recur(len - k -1)/dupnum; } return count; } long long Recur(int a) { if (a == 0) return 1; return a*Recur(a - 1); } }; #endif
相关文章推荐
- LintCode 197. 排列序号
- python_lintcode_简单题_8旋转字符_420报数_197排列序号
- LintCode:排列序号
- lintcode-197 排列序号
- lintcode ----排列序号
- LintCode之排列序号
- lintcode 容易题:Permutation Index 排列序号
- Lintcode 排列序号
- 排列序号II
- [LintCode 197] 排列序号(Python)
- 排列序号II
- lintcode-197-排列序号
- lintcode 合并排列数组 II
- 排列序号-LintCode
- GridView控件中加自动排列序号
- [LintCode] 586 Sqrt(x) II 解题报告
- nyoj-469 擅长排列的小明 II
- 擅长排列的小明 II
- [LintCode] Trapping Rain Water II
- 表格删除序列号自动排列序号