zoukankan      html  css  js  c++  java
  • 查找两个有序数组的中位数

    题目:

    给定两个大小为 m 和 n 的有序数组 nums1 和 nums2

    请你找出这两个有序数组的中位数,并且要求算法的时间复杂度为 O(log(m + n))。

    你可以假设 nums1 和 nums2 不会同时为空。

    示例 1:

    nums1 = [1, 3]
    nums2 = [2]
    
    则中位数是 2.0

    class Solution {
        public double findMedianSortedArrays(int[] nums1, int[] nums2) {
            
            int sum=nums1.length+nums2.length;
            int[] a=new int[sum];
            
            double mid=0.0d;
            
            for(int i=0;i<nums1.length;i++)
            {
                a[i]=nums1[i];
            }
            
            for(int i=0;i<nums2.length;i++)
            {
                a[nums1.length+i]=nums2[i];
            }
            
            Arrays.sort(a);
            
            mid=sum%2==1?(double)a[sum/2]:(a[sum/2-1]+a[sum/2])/2.0f;
            
            return mid;
        }
    }

    上式的方法虽然实现了算法要求,但是时间复杂度却没有达到;

  • 相关阅读:
    js模块化历程
    夜深
    出差(六)开会
    高情商的十大典型表现
    出差(五)调整
    HighCharts简单应用
    出差(四)适应
    出差(三)尝试
    出差(二)熟悉
    ZTree简单应用
  • 原文地址:https://www.cnblogs.com/Optimism/p/10719957.html
Copyright © 2011-2022 走看看