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

  首先呢我也声明一番,我是第一次写博客很多地方有些问题和不对的对方还望各位能批评指正。今天我去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判断就可以完成了,上机调试也是成功的,最后也成功提交了。
提交成功的图片
虽然是成功了(进阶部分没有说明),但是我这种方法有点浪费内存,并不是一个好方法,期待各位给出更好的方法,欢迎各位在评论留言与交流!

已标记关键词 清除标记
©️2020 CSDN 皮肤主题: 数字20 设计师:CSDN官方博客 返回首页