[LintCode 197] 排列序号(Python)
来源:互联网 发布:热血屠龙进阶数据 编辑:程序博客网 时间:2024/06/04 18:22
题目描述
给出一个不含重复数字的排列,求这些数字的所有排列按字典序排序后该排列的编号。其中,编号从1开始。
样例
例如,排列 [1,2,4] 是第 1 个排列。
思路
例如排序[1, 4, 2]。
1的后面有
1的后面有0个数比它小;4的后面有1个数比它小;2的后面有0个数比它小。
因为是从0开始计数的,最后index还需加1。
代码
class Solution: """ @param: A: An array of integers @return: A long integer """ def permutationIndex(self, A): # write your code here index = 0 if A is None or len(A) == 0: return index # 记录当前位之后的排列可能数 t1 = [0] * len(A) # 记录之后的数中比当前数小(逆序)的个数 t2 = [0] * len(A) t = 1 for i in range(len(A)): if i != 0: t *= i t1[len(A) - 1 - i] = t if i == len(A) - 1: break for j in range(i+1, len(A)): if A[j] < A[i]: t2[i] += 1 res = 0 for i in range(len(t1)): res += t1[i] * t2[i] return res + 1
复杂度分析
时间复杂度
阅读全文
0 0
- [LintCode 197] 排列序号(Python)
- LintCode 197. 排列序号
- lintcode ----排列序号
- LintCode:排列序号
- Lintcode 排列序号
- LintCode之排列序号
- 排列序号-LintCode
- 排列序号II-LintCode
- lintcode Permutation Index 排列序号
- **[Lintcode]Permutation Index II排列序号II
- lintcode刷题——排列序号
- 排列序号
- 排列序号
- 排列序号
- 排列序号
- 排列序号
- 排列序号
- 全排列的序号
- MySQL 笔记(练习题)
- QCheckBox 复选框
- http会话的四个过程
- Java后台开发工具集
- [cocos2dx]可视元素——CCTexture2D纹理类
- [LintCode 197] 排列序号(Python)
- Glide源码解析
- MATLAB与C/C++混合编程之MATLAB调用C程序
- 错误日志的添加,每个日志的大小为1M,循环30次。
- Java Web利用ajax提交JSON数据
- Codeforces 725D[Contest Balloons]【贪心】
- mysql_事务
- MySQL数据库编码不一致导致的中文乱码
- strlen()和mb_strlen()的区别