您的位置:首页 > 其它

leetcode-4Median of Two Sorted Arrays

2015-06-23 20:49 337 查看
寻找2个有序表的中位数,直接递归搞。

import  java.util.* ;

public class Solution{
public double findMedianSortedArrays(int[] nums1, int[] nums2) {
int n = nums1.length ;
int m = nums2.length ;
int d = n + m ;
if((d & 1) == 1) return 1.0 * findKth(nums1, n, nums2, m, d/2 + 1) ;
else return 0.5 * (findKth(nums1, n, nums2 , m, d/2)
+ findKth(nums1, n, nums2, m, d/2+1) ) ;
}

public int findKth(int[] a,  int n ,  int[] b , int m , int k){
if(n > m) // ensure   n <= m
return  findKth(b, m, a, n, k) ;
if(n == 0)   return  b[k-1] ;
if(k == 1)   return  Math.min(a[0], b[0]) ;
int pa = Math.min(k/2 ,  n) ;
int pb = k - pa ;
if(a[pa-1] < b[pb-1])
return findKth(Arrays.copyOfRange(a, pa , n) ,  n-pa , b, m, k-pa) ;
else if(a[pa-1] > b[pb-1])
return findKth(a, n, Arrays.copyOfRange(b, pb, m) , m - pb , k - pb) ;
return  a[pa-1] ;
}

public static void main(String[] args) {
System.out.println(new Solution().findMedianSortedArrays(new int[]{1,2,3}, new int[]{6,7}))  ;
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: