leetcode 寻找两个正序数组的中位数
采用归并排序的思想
class Solution { public double findMedianSortedArrays(int[] nums1, int[] nums2) { int[] result = merger(nums1,nums2); int length = result.length; //为偶数时返回前一个数和后一个数 if( length% 2 ==0) return (result[length/2]+result[length/2-1])/2.0; //为奇数直接返回 return result[length/2]/1.0; } //归并排序思想 public int[] merger(int[] nums1,int [] nums2){ int n =nums1.length; int m =nums2.length; if(n==0 && m!=0) return nums2; if(n!=0 && m==0) return nums1; int[] temp = new int[m+n]; int k = 0; int l =0; int r =0; //从小到大排序 while(l<=n-1 && r<=m-1){ int result = nums1[l]<=nums2[r]?nums1[l++]:nums2[r++]; temp[k++] = result; } //左组若没有放完,则左组剩下的全大于右组,直接放最后面 while(l<=n-1){ temp[k++] = nums1[l++]; } //同理 while(r<=m-1) temp[k++] = nums2[r++]; //返回生成的新数组 return temp; } }
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)