题目描述:
给定两个大小分别为m和n的正序(从小到大)数组nums1和nums2。请你找出并返回这两个正序数组的中位数。
解析:
1.定义一个新的空数组nums,然后合并数组nums,nums1,nums2
2.合并数组方法,定义三个指针i,j,k分别指向数组nums1,nums2,nums,
遍历数组nums1和nums2的值,按从小到大的顺序填入数组nums中,
若遍历完一个数组的值后,另一个数组的值还有,直接添加到nums数组中即可。
3.判断数组nums中值的个数为奇数还是偶数,然后返回中位数。
Java:
public double findMedianSortedArrays(int[] nums1, int[] nums2) { int[] nums = new int[nums1.length + nums2.length]; merge(nums, nums1, nums2); int l = nums.length; if(l % 2 == 0) { return (nums[(l - 1)/2] + nums[l/2]) /2.0; } else { return nums[l/2] * 1.0; } } public void merge(int[] nums, int[] nums1, int[] nums2) { int i = 0, j = 0, k = 0; while(i < nums1.length && j < nums2.length) { if(nums1[i] <= nums2[j]) { nums[k++] = nums1[i++]; } else { nums[k++] = nums2[j++]; } } while(i < nums1.length) { nums[k++] = nums1[i++]; } while(j < nums2.length) { nums[k++] = nums2[j++]; } }