package com.alex.examples.exceptions;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Comparator;
import java.util.List;
/**
* 题目:给定两个大小分别为 m 和 n 的正序(从小到大)数组 nums1 和 nums2。请你找出并返回这两个正序数组的中位数。
*/
public class TestTwo {
public static void main(String[] args) {
Integer[] nums1 = {1, 3, 5, 7};
Integer[] nums2 = {2, 4, 3, 4};
Float f = get(nums1, nums2);
System.out.println("中位数是:" + f);
}
public static Float get(Integer[] nums1, Integer[] nums2) {
List<Integer> list1 = Arrays.asList(nums1);
List<Integer> list2 = Arrays.asList(nums2);
List<Integer> list3 = new ArrayList<>();
list3.addAll(list1);
list3.addAll(list2);
list3.sort(Comparator.naturalOrder());
Integer len = list3.size();
if (len % 2 != 0) { //奇数
Integer index = (len + 1) / 2 - 1; //计算规则:获取数组的长度+1,是为了和2整除,-1是因为list的下标是从0开始计算的
return Float.valueOf(list3.get(index));
} else { //偶数
Integer index = (len / 2) - 1; //计算规则:获取数组的长度和2整除,-1是因为list的下标是从0开始计算的
return Float.valueOf((list3.get(index) + list3.get(index + 1)) / Float.valueOf(2));
}
}
}
面试题-给定两个大小分别为 m 和 n 的正序(从小到大)数组 nums1 和 nums2。请你找出并返回这两个正序数组的中位数
最新推荐文章于 2023-05-08 18:52:06 发布