您的位置:首页 > 大数据 > 人工智能

[LintCode] 逆序对 Reverse Pairs

2016-04-26 16:11 519 查看
在数组中的两个数字如果前面一个数字大于后面的数字,则这两个数字组成一个逆序对。给你一个数组,求出这个数组中逆序对的总数。

概括:如果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;
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: