首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >4. 寻找两个正序数组的中位数

4. 寻找两个正序数组的中位数

作者头像
名字是乱打的
发布2021-12-23 18:41:24
发布2021-12-23 18:41:24
4090
举报
文章被收录于专栏:软件工程软件工程

代码:

代码语言:javascript
复制
  public double findMedianSortedArrays(int[] nums1, int[] nums2) {
        //num1,num2的游标
        int num1Index=0,num2Index=0;
        int num1Length=nums1.length,num2Length=nums2.length;

        int totalLength= nums1.length+nums2.length;
        int avgIndex= (int) Math.ceil(new Double(totalLength)/2);
        //如果总长度是偶数则取第avgIndex和第avgIndex+1个数的平均数,如果是奇数则取第avgIndex个数的数

        int left=0,right=0;
        for (int i = 0,end=((totalLength&1)==1)?avgIndex:avgIndex+1; i <end ; i++) {
            left=right;
            if (num1Index==num1Length){
                right=nums2[num2Index++];
            }else if (num2Index==num2Length){
                right=nums1[num1Index++];
            }else {
                right=nums1[num1Index]<nums2[num2Index]?nums1[num1Index++]:nums2[num2Index++];
            }
        }

        if ((totalLength&1)==1){
            return new Double(right);
        }else {
            return new Double(right+left)/2;
        }
    }
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2021/6/17 上,如有侵权请联系 cloudcommunity@tencent.com 删除
目录
  • 代码:
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档