题解 | #数组中的逆序对#

数组中的逆序对

http://www.nowcoder.com/questionTerminal/96bd6684e04a44eb80e6a68efc0ec6c5

保证前面的数组有序,使用二分法查找插入的位置,即可计算能和前面的数组成多少逆序对。 二分插入排序比较好懂。

| 1 | 2 | 3 | null | 5 | 6 | 7 | 8 | 4 |

import java.util.Arrays;

public class Solution {

    public static void main(String[] args) {
        int[] arr = new int[]{7,6,5,4,3,2,1,0};
        int result = new Solution().InversePairs(arr);
        System.out.println(result);
    }

    public int InversePairs(int[] array) {

        long result = 0;

        for (int j = 1; j < array.length; j++) {

            int tmp = array[j];
            int index = Arrays.binarySearch(array, 0, j, tmp);
            int pos = (-index - 1);

            if (pos < j) {
                int len = j - pos;
                System.arraycopy(array, pos, array, pos+1, len);
                array[pos] = tmp;
                result += len;
                result %= 1000000007;
            }
        }

        return (int) result;
    }
}
全部评论

相关推荐

07-23 11:37
延安大学 C++
绷不住了,晚上十点发拒信,是还在加班吗这样一想挂了好像也没什么不好
码农索隆:这个都是真人发嘛,会用到机器人定时发嘛
点赞 评论 收藏
分享
给我发了笔试链接,想着等晚上回去做,结果还没做流程就终止了
伟大的小黄鸭在学习:我猜就是笔试几乎没用,就是用来给用人部门拖时间复筛简历的,可能用人部门筛到你简历觉得不合适就提前挂了
投递小鹏汽车等公司10个岗位
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务