[算法题目]寻找两个正序数组的中位数

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

描述

给定两个大小分别为 m 和 n 的正序(从小到大)数组 nums1 和 nums2。请你找出并返回这两个正序数组的 中位数 。
算法的时间复杂度应该为 O(log (m+n)) 。
来源:力扣(LeetCode)
链接:https://leetcode.cn/problems/median-of-two-sorted-arrays

思路

把所有数字存入List中然后排序,取出中位数.

代码

 public double findMedianSortedArrays(int[] nums1, int[] nums2) {
        List<Integer> list = new ArrayList<>(nums1.length + nums2.length);
        for (int i = 0; i < nums1.length; i++) {
            list.add(nums1[i]);
        }
        for (int i = 0; i < nums2.length; i++) {
            list.add(nums2[i]);
        }
        list = list.stream().sorted().collect(Collectors.toList());

        if (list.size() == 0) {
            return 0;
        }
        if (list.size() == 1) {
            return list.get(0);
        }
        if (list.size() % 2 == 0) {
            Integer bef = list.get(list.size() / 2);
            Integer aft = list.get(list.size() / 2 - 1);
            return (bef + aft) / (double) 2;
        } else {
            return list.get((list.size() - 1) / 2);
        }
    }
}

效率

posted @ 2022-11-02 11:09  异世界阿伟  阅读(25)  评论(0)    收藏  举报