給定兩個大小為 m 和 n 的正序(從小到大)陣列 nums1 和 nums2。請你找出並返回這兩個正序陣列的中位數。

花朝666發表於2020-10-29

我的方法粗暴,申請一個長度等於二者之和的陣列,然後先後拷貝到新陣列,繼續排序,然後根據長度求到中位數;我的時間複雜度和空間複雜度都算不上最好,所以就是個暴力解法,有更好的解法歡迎指正(我現在只學習了氣泡排序)
class Solution {
public double findMedianSortedArrays(int[] nums1, int[] nums2) {
int n = nums1.length;
int m = nums2.length;
int[] array = new int[n+m];
System.arraycopy(nums1,0,array,0,n);
System.arraycopy(nums2,0,array,n,m);
Arrays.sort(array);
if((n+m) % 2 != 0){
int s = (n+m) / 2;
return array[s];
}else{
int a = (n+m) / 2;
return(array[a] + array[a-1])*1.0 / 2;
}
}
}

相關文章