給定兩個大小爲 m 和 n 的有序數組 nums1 和 nums2。
請你找出這兩個有序數組的中位數,而且要求算法的時間複雜度爲 O(log(m + n))。
你能夠假設 nums1 和 nums2 不會同時爲空。算法
示例 1:
nums1 = [1, 3]
nums2 = [2]
則中位數是 2.0
示例 2:
nums1 = [1, 2]
nums2 = [3, 4]
則中位數是 (2 + 3)/2 = 2.5數組
在不考慮時間複雜度的狀況下spa
public static double findMedianSortedArrays(int[] nums1, int[] nums2) { double num=0; //將nums1和nums2放入數組arrs中 int length=nums1.length+nums2.length; int[] arrs=new int[length]; for (int i=0;i <nums1.length ; i++) { arrs[i]=nums1[i]; } int a; int b; int c=arrs.length-nums1.length; for(a=1, b=0;a<=c&&b<nums2.length;a++,b++) { int d=arrs.length-a; arrs[d]=nums2[b]; } for (int i=0;i<arrs.length;i++){ for (int j=i+1;j<arrs.length;j++){ if (arrs[i] > arrs[j]){ int tmp = arrs[i]; arrs[i] = arrs[j]; arrs[j] = tmp; } } } int index=arrs.length/2; //取中位數 if(arrs.length%2==0){ //取餘得0則爲偶數 num=(double) (arrs[index]+arrs[index-1])/2; System.out.println(arrs[index]+"+"+arrs[index-1]); }else { num=(double) arrs[index]; System.out.println(arrs[index]); } return num; }