[算法题目]寻找两个正序数组的中位数
寻找两个正序数组的中位数
描述
给定两个大小分别为 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);
}
}
}
效率
本文来自博客园,作者:异世界阿伟,转载请注明原文链接:https://www.cnblogs.com/yusishi/p/16850386.html

浙公网安备 33010602011771号