寻找两个正序数组的中位数-leetcode自解

Posted Fire king

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了寻找两个正序数组的中位数-leetcode自解相关的知识,希望对你有一定的参考价值。

思路:跟人平时找中位数一样:

  1. 合并数组
  2. 排序
  3. 分奇偶找
class Solution 
    public double findMedianSortedArrays(int[] nums1, int[] nums2) 
        int len1 = nums1.length;
        int len2 = nums2.length;
        int [] nums3 = new int[len1 + len2];
        int len3 = nums3.length;
        int j = 0;
        //合并
        for (int i = 0 ; i < len3 ; i++) 
            if (i > len1 - 1) 
                nums3[i] = nums2[j++];
             else 
                nums3[i] = nums1[i] ;
            
        
        //排序
        int[] sorted = Arrays.stream(nums3).sorted().toArray();
        //寻找中位数,分奇偶

        //1.偶
        if (len3 % 2 == 0) 
            int mid1Index  = len3 / 2 - 1;
            int mid2Index = mid1Index + 1;
            double mid = ((double) sorted[mid1Index] + (double) sorted[mid2Index]) / 2;
            return mid;
         else 
            int midFirst  = (len3 - 1) / 2 - 1;
            double mid = sorted[midFirst + 1];
            return mid;
        
    

以上是关于寻找两个正序数组的中位数-leetcode自解的主要内容,如果未能解决你的问题,请参考以下文章

Leetcode 4. 寻找两个正序数组的中位数-困难(带图)

Hard | LeetCode 4. 寻找两个正序数组的中位数 | 二分法

LeetCode4. 寻找两个正序数组的中位数(C++)

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

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

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