Given a permutation which contains no repeated number, find its index in all the permutations of these numbers, which are ordered in lexicographical order. The index begins at 1.

在计算最终的 index 时需要动态计算某个数的相对大小。我们可通过两重循环得出到某个索引处值的相对大小。

正确

以4,1,2为例,4为第3大数,1为剩余序列第1大数,2为剩余序列第1大数,

故表达式为:(3-1)*2! + (1-1)*1! + (1-1)*0! + 1 = 5

以2,4,1为例,2为第2大数,4为剩余序列第2大数,1为剩余序列第1大数

故表达式为:(2-1)*2! + (2-1)*1! + (1-1)*0! + 1 = 4

这后面这个1一定要加,因为前面算的都是比该数小的数,加上这个1,才是该数是第几大数。

2!表示当时当前位后面还有两位,全排列有2!种

 1 public class Solution {
 2     /**
 3      * @param A an integer array
 4      * @return a long integer
 5      */
 6     public long permutationIndex(int[] A) {
 7         // Write your code here
 8         long res = 0;
 9         int n = A.length;
10         long fact = 1;
11         for (int i=1; i<n; i++) {
12             fact *= i; //fact should at last equal (n-1)!
13         }
14         int initial = n-1; //use to update factorial
15         for (int i=0; i<n; i++) {
16             long count = 0;
17             for (int j=i; j<n; j++) {
18                 if (A[i] >= A[j]) {
19                     count++;
20                 }
21             }
22             res += (count-1)*fact;
23             if (initial != 0) {
24                 fact /= initial;
25                 initial--;
26             }
27         }
28         res = res + 1;
29         return res;
30     }
31 }

转载于:https://www.cnblogs.com/EdwardLiu/p/5104310.html

Lintcode: Permutation Index相关推荐

  1. lintcode Permutation Index

    题目:http://www.lintcode.com/zh-cn/problem/permutation-index/ 排列序号 给出一个不含重复数字的排列,求这些数字的所有排列按字典序排序后该排列的 ...

  2. 九章算法 第七到九章 预习笔记

    ********************第七章 基于排列.图的DFS预习笔记******************** 本章节的先修知识有: 全排列问题如何使用深度优先搜索来实现?和全子集问题的异同在哪 ...

  3. [OSDI 16] Wukong : 基于RDMA的高并发、快速的分布式RDF Graph Query系统

    今天要讲的文章是OSDI 2016年的一篇文章,Fast and Concurrent RDF Queries with RDMA-based Distributed Graph Exploratio ...

  4. R语言中的机器学习包

    转载自:http://blog.csdn.net/liuxincumt/article/details/7527917 Machine Learning & Statistical Learn ...

  5. r语言的MASS包干什么的_R语言常用包汇总

    转载于:https://blog.csdn.net/sinat_26917383/article/details/50651464?locationNum=2&fps=1 一.一些函数包大汇总 ...

  6. python递归实现全排列

    伪代码 来源:MIT. 6.0001 ProblemSet 4 Python代码 def get_permutations(sequence):if len(sequence) == 1:return ...

  7. LintCode 249. 统计前面比自己小的数的个数

    给定一个整数数组(下标由 0 到 n-1, n 表示数组的规模,取值范围由 0 到10000).对于数组中的每个 ai 元素,请计算 ai 前的数中比它小的元素的数量. 注意事项 We suggest ...

  8. UVa 11027 - Palindromic Permutation 回文串,组合加搜索

    http://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&category=115&page=s ...

  9. Minimize the Permutation CodeForces - 1256(贪心)

    题意: q次询问,每次询问给你长度为n的排列,然后你每次可以选择一个位置i和i+1的数字进行交换.但是每个位置只能交换一次,问你反转若干次后,这个排列最小是多少? 题目: You are given ...

最新文章

  1. 初学 ASP.NET AJAX (一):构建 ASP.NET AJAX 开发环境
  2. 浏览器标准模式与怪异模式的区别
  3. 上传的镜像无法用来启动云主机
  4. Windows下nginx-http-flv-module编译
  5. matlab您的安装可能需要执行其他配置步骤_手把手超详细介绍MATLAB+RoadRunner+Unreal Engine自动驾驶联合仿真...
  6. batocera_batocera系统如何把旧电脑改造成影音游戏主机
  7. 美股,港股和A股三者之间的关系和差别
  8. 【Python】Python实战从入门到精通之六 -- 教你读取文件
  9. 分享一下淘宝iData技术嘉年华的几点感触
  10. 版本管理器subversion的简单配置以及和apache的结合使用
  11. Win7下如何破解Visual Studio2008 90天试用版
  12. 红米K40 Pro的root步骤(MIUI12.5 稳定版 安卓11)
  13. 北理工团队在不同注意力状态下肢体运动意图的鲁棒神经解码方面取得重要研究进展...
  14. java命名不规范会怎样_java命名规范:注重细节
  15. 前端JS项目实战——瀑布流
  16. linux memery dump
  17. 数据仓库卸数(网银系统数据库)
  18. 流量不清零:为何让三运营商的垄断越走越紧
  19. 训练集和测试集的分布差距太大有好的处理方法吗?
  20. 大学计算机课程ppt,北京大学计算机基础课程-PPT课件

热门文章

  1. Linux利用list_head结构实现双向链表
  2. URL传递中文、Ajax传递中文,Java如何编码如何解决乱码
  3. 17R-无重复数字的三位数和去重后最大数
  4. python寻峰算法_现代法谱估计(1)Yule Walker 方程法MATLAB及Python实现
  5. 微信密文聊天新方法,很实用!
  6. Selenium自动化测试-7.获取元素属性信息
  7. python 身体BMI指数判断
  8. 以太坊合约24小时新增2.44万ETH
  9. 尼日利亚年轻人推动该国登上比特币谷歌搜索排名榜首
  10. 火币辟谣:警惕假冒火币生态链网站