栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

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

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

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

给定两个大小分别为 m 和 n 的正序(从小到大)数组 nums1 和 nums2。请你找出并返回这两个正序数组的 中位数 。

 

示例 1:

输入:nums1 = [1,3], nums2 = [2]
输出:2.00000
解释:合并数组 = [1,2,3] ,中位数 2
示例 2:

输入:nums1 = [1,2], nums2 = [3,4]
输出:2.50000
解释:合并数组 = [1,2,3,4] ,中位数 (2 + 3) / 2 = 2.5

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/median-of-two-sorted-arrays
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
import java.util.*;

public class 寻找两个正序数组的中位数 {

    public static void main(String[] args) {
        int[] nums1 = new int[]{1,2};
        int[] nums2 = new int[]{3,4};
        double medianSortedArrays = findMedianSortedArrays(nums1, nums2);
        System.out.println(medianSortedArrays);
    }
    public static double findMedianSortedArrays(int[] nums1, int[] nums2) {
//        List list = new ArrayList<>();
//        for (int value : nums1) {
//            list.add(value);
//        }
//        for (int i : nums2) {
//            list.add(i);
//        }
//        Collections.sort(list);
//        Integer[] arr = new Integer[list.size()];
//        Integer[] integers = list.toArray(arr);
//        if(integers.length == 1) {
//            return integers[0];
//        }
        int[] arr = new int[nums1.length + nums2.length];
        int count = 0;
        for (int value : nums1) {
            arr[count++] = value;
        }
        for (int value : nums2) {
            arr[count++] = value;
        }
        if(arr.length == 1) {
            return arr[0];
        }
        Arrays.sort(arr);
        int end = arr.length - 1;
        int start = 0;
        while (end != start && end >= start) {
            end--;
            start++;
        }
        return (arr[end] + arr[start]) / 2.0;
    }
}


解题思路

首先要将两个数组合并为一个数组,利用双指针的思想,找出中间的位置

小结

一开始使用list集合是想到不知道数组的大小,没法创建一个新的数组,自己傻了,哈哈哈,不过也从中学到了list的一些方法内容。
对list集合排序Collections.sort(list);,将list变为数组Integer[] arr = new Integer[list.size()]; Integer[] integers = list.toArray(arr);,不能是int类型,最后在返回数据是,一开始是/2,这样是错的,应该/2.0
虽然时间内存都不是很高,不过能写出来也算可以了,哈哈哈!

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/309919.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号