shanX
文章31
标签17
分类9
Leetcode-004-寻找两个正序数组的中位数

Leetcode-004-寻找两个正序数组的中位数

寻找两个正序数组的中位数

最朴实的方法,数组合并用 sort 排序,然后找出中位数:

import java.util.ArrayList;
import java.util.Collections;

public class FindMedianSortedArrays {
    public static void main(String[] args) {
        int[] arr1 = new int[]{};
        int[] arr2 = new int[]{};

        float res = findMedianSortedArrays(arr1,arr2);
        System.out.println("中位数为"+res);
    }

    public static float findMedianSortedArrays(int[] nums1, int[] nums2) {
        ArrayList<Integer> arr = new ArrayList<>();
        for (int i : nums1) {
            arr.add(i);
        }
        for (int i : nums2) {
            arr.add(i);
        }
        Collections.sort(arr);

        float res = 0;
        int length = arr.size();
        int mid;
        if (length==0){
            return 0;
        }else if (length%2==1){
            mid = arr.size()/2;
            res = arr.get(mid);
        }else {
            mid = arr.size()/2;
            res = arr.get(mid) + arr.get(mid-1);
            res = res/2;
        }
        return res;
    }
}

但是

要求时间复杂度为 O(log (m+n))

所以需要使用——归并排序法

本文作者:shanX
本文链接:https://rhymexmove.github.io/2021/04/26/dd0d618383ec/
版权声明:本文采用 CC BY-NC-SA 3.0 CN 协议进行许可