leetcode:Median of Two Sorted Arrays 【Java】

来源:互联网 发布:caffe推荐系统 编辑:程序博客网 时间:2024/05/22 19:35

一、问题描述

There are two sorted arrays nums1 and nums2 of size m and n respectively. Find the median of the two sorted arrays. The overall run time complexity should be O(log (m+n)).

二、问题分析

合并两个有序数组(参考算法leetcode:Merge Sorted Array 【Java】)后,寻找中位数。

三、算法代码

public class Solution {    public double findMedianSortedArrays(int[] nums1, int[] nums2) {        int [] mergedArray = merge(nums1, nums1.length, nums2, nums2.length);        int len = mergedArray.length;        double middle = 0.0;        if(len % 2 == 0){            middle = ((double)mergedArray[(len - 1) / 2] + (double)mergedArray[(len - 1) / 2 + 1]) / 2;        }else{            middle = (double)mergedArray[(len - 1) / 2];        }        return middle;    }        //合并两个有序数组    public int[] merge(int[] nums1, int m, int[] nums2, int n) {        int a_index = m - 1;        int b_index = n - 1;        int a_cur = m + n - 1;        int [] result = new int[m + n];        while(a_index >= 0 && b_index >= 0){        if(nums1[a_index] >= nums2[b_index]){        result[a_cur] = nums1[a_index];        a_cur--;        a_index--;        }else{        result[a_cur] = nums2[b_index];        a_cur--;        b_index--;        }        }        while(b_index >= 0){        result[a_cur] = nums2[b_index];    a_cur--;    b_index--;        }        while(a_index >= 0){        result[a_cur] = nums1[a_index];    a_cur--;    a_index--;        }        return result;    }}


0 0