[LintCode] 逆序对 Reverse Pairs

来源:互联网 发布:北大青鸟计算机二级vb 编辑:程序博客网 时间:2024/06/11 23:26

在数组中的两个数字如果前面一个数字大于后面的数字,则这两个数字组成一个逆序对。给你一个数组,求出这个数组中逆序对的总数。
概括:如果a[i] > a[j] 且 i < j, a[i] 和 a[j] 构成一个逆序对。

样例
序列 [2, 4, 1, 3, 5] 中,有 3 个逆序对 (2, 1), (4, 1), (4, 3),则返回 3 。

For an array A, if i < j, and A [i] > A [j], called (A [i], A [j]) is a reverse pair.
return total of reverse pairs in A.
Example
Given A = [2, 4, 1, 3, 5] , (2, 1), (4, 1), (4, 3) are reverse pairs. return 3

此处使用暴力法,似乎改用归并排序的思想。mark下回头研究下。

public class Solution {    /**     * @param A an array     * @return total of reverse pairs     */    public long reversePairs(int[] A) {        if(null == A || A.length <= 1) return 0;        long count = 0l;        for(int i = 0; i < A.length-1; i++) {            for(int j = i+1; j < A.length; j++) {                if(A[i] > A[j])                    count++;            }        }        return count;    }}
0 1
原创粉丝点击