程序题:寻找两个正序数组的中位数(思路:合并成为一个数组)

该代码示例展示了如何将两个整数数组合并成一个有序列表,利用ArrayList的便利性进行操作。之后,它找到并返回合并后列表的中位数。如果列表长度为偶数,则返回中间两个数的平均值;否则,返回中间的数。
摘要由CSDN通过智能技术生成

 利用LinkedList将两个数组合并成一个有序的链表

突然发现用ArrayList会更方便

然后在对新的表操作,找到中位数

public static  double m7(){
        int[] nums1 = {1,3};         // j
        int[] nums2 = {1, 4, 7, 8, 13, 14, 16};   // i
        List<Double> list = new LinkedList<>();
        int i = 0,j = 0;
        for (;i < nums2.length && j < nums1.length;) {
            if(nums1[j] >= nums2[i]){
                list.add((double) nums2[i]);
                i++;
            } else if (nums1[j] < nums2[i]) {
                list.add((double) nums1[j]);
                j++;
            }
        }
        if(nums2.length > nums1.length){
            for (int k = i; k < nums2.length; k++) {
                list.add((double) nums2[k]);
            }
        } else if (nums2.length < nums1.length) {
            for (int k = j; k < nums1.length; k++) {
                list.add((double) nums1[k]);
            }
        }
        System.out.println(list);
        int a = list.size();
        System.out.println("a = " + a );
        if(a % 2 == 0){
            System.out.println("aaaaa");
            double b = list.get(a/2);
            double c = list.get(a/2 + 1);
            return (b + c) / 2;
        } else if (a % 2 != 0) {
            System.out.println("bbbbbbb");
            return list.get(a/2);
        }
        return 0;
    }

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值