我的代碼執行是可以的,但是提交就會出現堆疊溢位問題。求救->標紅的代碼會出現堆疊溢位問題
class Solution {
private long sum;
public int reversePairs(int[] nums) {
sum=0;
int l=0;
int r=nums.length-1;
divide(nums,l,r);
return (int)sum;
}
public void divide(int[] nums,int l,int r){
if(l!=r){
int mid=(l+r) >> 1;
divide(nums,l,mid);
divide(nums,mid+1,r)
merge(nums,l,mid,r);
}
}
public void merge(int[] nums,int l,int mid,int r){
int[] temp=new int[r-l+1];
int i=l;
int j=mid+1;
int index=0;
while(i<=mid&&j<=r){
if(nums[i]>nums[j]){
temp[index++]=nums[j++];
//這一行是核心,統計逆序的個數 其他的代碼就是歸并排序
sum+=mid-i+1;
}else{
temp[index++]=nums[i++];
}
}
while(i<=mid){
temp[index++]=nums[i++];
}
while(j<=r){
temp[index++]=nums[j++];
}
index=0;
for(int k=l;k<=r;k++){
nums[k]=temp[index++];
}
}
}
uj5u.com熱心網友回復:
沒考慮空陣列的情況了……uj5u.com熱心網友回復:
謝謝 哥
我腦袋糊涂了^^
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/19278.html
標籤:Java相關
上一篇:請大神給予指導:java.lang.reflect.InvocationTargetException找瘋了找不到問題
下一篇:哪位大神幫我說說這是怎么回事呀
