排列序号

原创 2016年05月31日 17:16:51

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

例如,排列[1,2,4]是第1个排列,第二个[1,4,2],第六个为[4,2,1]

public class Solution {
    /**
     * @param A an integer array
     * @return a long integer
     * 对4个数的排列,各位的权值为:3!,2!,1!,0!。
     * 第一位之后的数小于第一位的个数是x,第二位之后的数小于第二位的个数是y
     * ,第三位之后的数小于第三的个数是z,第四位之后的数小于第四位的个数是w
     * ,则abcd排列所在的序列号:index = x*3!+y*2!+z*1!,<0!=0> 编号从0开始
     */
    public long permutationIndex(int[] A) {
        // Write your code here
        long index = 0;//记录序号
        long position = 2;//数字的位置
        long weight = 1;//权值
        
        //从倒数第二位开始数,看他的后面有几个小于他的数
        for (int i = A.length - 2; i >= 0; i--){
            long count = 0;
            for (int j = i + 1; j < A.length; j++){
                if (A[j] < A[i]){
                    count++;
                }
            }
            index += (weight * count);
            weight *= position;
            position += 1;
        }
        return (index + 1);
    }
}

版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

LabView 出圈人序号排列

  • 2014-04-04 21:49
  • 32KB
  • 下载

lintcode Permutation Index 排列序号

排列序号  描述 笔记  数据  评测 给出一个不含重复数字的排列,求这些数字的所有排列按字典序排序后该排列的编号。其中,编号从1开始。 您在真实...

算法:康托展开式——实现全排列序列与序号的映射

康托展开式实现了由1到n组成的全排列序列到其编号之间的一种映射,下面会给出例子,虽然这个公式应用不是很多,但这种思想值得学习,首先给出其公式: X=an*(n-1)!+an-1*(n-2)!+...+...

Java实现-排列序号2

public class Solution {     /**      * @param A an integer array      * @return a long integer     &...

python_lintcode_简单题_8旋转字符_420报数_197排列序号

python× 8-旋转字符× 420报数× 197排列序号× lintcode×

排列序号

题目描述:给出一个不含重复数字的排列,求这些数字的所有排列按字典序排序后该排列的编号。其中,编号从1开始。 样例:例如,排列 [1,2,4] 是第 1 个排列。 关于“字典序”和排列的相关基础概...

排列序号

给出一个不含重复数字的排列,求这些数字的所有排列按字典序排序后该排列的编号。其中,编号从1开始。 样例 例如,排列 [1,2,4] 是第 1 个排列。

全排列字典序与序号的一一对应关系 康托展开 perm2num num2 perm

康托展开   康托展开的公式是 X=an*(n-1)!+an-1*(n-2)!+...+ai*(i-1)!+...+a2*1!+a1*0! 其中,ai为当前未出现的元素中是排在第几个(从0开始)...

lintcode ----排列序号

想法: 1.对于四位数:4213 = 4*100+2*100+1*10+3 2.4个数的排列有4!种。当我们知道第一位数的时候,还有3!种方式,当知道第二位数时候还有2!种方式,当知道第三位数的时候...

题目:排列序号

给出一个不含重复数字的排列,求这些数字的所有排列按字典序排序后该排列的编号。其中,编号从1开始。 您在真实的面试中是否遇到过这个题? Yes 哪家公司问你的这个题? Airbnb ...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)