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.逆序对的计算用一行就可以解决了,真的出其不意
网友评论