改进:寻找第k大的数
/**4. Median of Two Sorted Arrays * @param nums1 * @param nums2 * @return 两个数字的中数 */ public double findMedianSortedArrays(int[] nums1, int[] nums2) { int len1 = nums1.length; int len2 = nums2.length; if ((len1+len2)%2 == 1) {//奇数 return findNum((len1+len2)/2, nums1, nums2); } else { return (double)(findNum((len1+len2)/2, nums1, nums2)+findNum((len1+len2)/2+1, nums1, nums2))/2; } } public int findNum(int k, int[] nums1, int[] nums2) { int x = 0, y = 0; int xlen = nums1.length; int ylen = nums2.length; for (int i=1; i<=k; i++) { if (x < xlen && y < ylen) { if (nums1[x] < nums2[y]) { if (i == k) { return nums1[x]; } x++; } else { if (i == k) { return nums2[y]; } y++; } } else if (x >= xlen) { if (i == k) { return nums2[y]; } y++; } else if (y >= ylen) { if (i == k) { return nums1[x]; } x++; } } return 0; } // beats 86.81%