关于一个两数组找中位数的小算法实现

  首先呢我也声明一番,我是第一次写博客很多地方有些问题和不对的对方还望各位能批评指正。今天我去LeetCode上看到了一道归属于困难的算法题,与我尝试解答了一下,经过几番调式和思考我写出了一段代码。下面是算法题的和我写的代码
算法图片

import java.util.Arrays;

public class ArrayMedian {
    public static  double findMedianSortedArrays(int[] nums1, int[] nums2) {
        double result=0.0;
        int[] arr=new int[nums1.length+nums2.length];
        for (int i=0;i<nums2.length;i++){
            arr[i]=nums2[i];

        }
        for (int i=nums2.length,j=0;i<arr.length;i++){
            arr[i]=nums1[j];
            j++;
        }
        Arrays.sort(arr);
        System.out.println(Arrays.toString(arr));
        if (arr.length%2==0){
            result= (double) (arr[(arr.length / 2)-1] + arr[(arr.length / 2 + 1)-1] )/ 2;
        }else {
            result=arr[((arr.length+1)/2)-1];
        }
        return result;
    }

    public static void main(String[] args) {
        double medianSortedArrays = findMedianSortedArrays(new int[]{1,45, 8,7,26,78,98,5, 6}, new int[]{2, 3, 9});
        System.out.println(medianSortedArrays);
    }
}

我的解题思路是:在堆中新开辟一个数组对象,将两个数组的元素全部加入新数组中,再将他们排序好,最后去中位数就简单了。一个简单的if判断就可以完成了,上机调试也是成功的,最后也成功提交了。
提交成功的图片
虽然是成功了(进阶部分没有说明),但是我这种方法有点浪费内存,并不是一个好方法,期待各位给出更好的方法,欢迎各位在评论留言与交流!

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

发飙的恒星

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值