
https://leetcode.com/problems/median-of-two-sorted-arrays/
这是一道水题,
两个有序列表求中位数.
思路很简单,先合并,再求中位数
合并的方式不是先随意合并,再排序,这样时间复杂度就变为了
O((n+m)log2(n+m)).
两列表有序,类似归并排序的合并方式,只需要O(n+m)时间
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45
|
class Solution { public double findMedianSortedArrays(int[] nums1, int[] nums2) { int len1 = nums1.length; int len2 = nums2.length; int[] a = new int[len1+len2]; for (int i=0;i<len1+len2;i++){ a[i] = 0; } int i=0;int j=0;int k = 0; while(i<len1 && j<len2){ if (nums1[i]<nums2[j]){ a[k] = nums1[i]; i++; }else{ a[k] = nums2[j]; j++; } k++; } while (i<len1){ a[k] = nums1[i]; i++; k++; } while (j<len2){ a[k] = nums2[j]; j++; k++; } if ((len1+len2)%2==0){ int mid = (len1+len2)/2; double p = (a[mid-1]+a[mid])/2.0; return p; }else{ int mid = (len1+len2)/2+1; return a[mid-1]; } } }
|
近期评论