2019-08-17剑指 数组中的逆序对

33min,用sublime写的java,很多语法错误。
1.length属性
2.int []

public class Solution {
    static int cnt=0;

    public int InversePairs(int [] array) {
        int[] tmp=new int[array.length];
        mergesort(array,0,array.length-1,tmp);
        return cnt;
    }

    public void mergesort(int [] array,int left,int right,int []tmp){
        if(right==left) return;  #递归忘记递归条件了
        int mid=(left+right)>>1;
        mergesort(array,left,mid,tmp);
        mergesort(array,mid+1,right,tmp);
        int p=left,q=mid+1,i=left;
        while(p<=mid||q<=right){
            if(q>right||(p<=mid &&array[p]<=array[q])) tmp[i++]=array[p++];
            else {
                cnt+=mid-p+1;
                cnt%=1000000007;
                tmp[i++]=array[q++];
            }
        }
        for(int j=left;j<=right;j++) array[j]=tmp[j];
    }
}

注意要点:
1.归并那里的条件很简洁,是很重要的点
2.逆序对的计算用一行就可以解决了,真的出其不意

你可能感兴趣的:(2019-08-17剑指 数组中的逆序对)