PHP算法之寻找两个有序数组的中位数

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

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

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

示例 1:

nums1 = [1, 3]
nums2 = [2]

则中位数是 2.0
示例 2:

nums1 = [1, 2]
nums2 = [3, 4]

则中位数是 (2 + 3)/2 = 2.5

来源:力扣(LeetCode)

代码献上 一定还有更好的解法

 

class Solution {

    /**
     * @param Integer[] $nums1
     * @param Integer[] $nums2
     * @return Float
     */
    function findMedianSortedArrays($nums1, $nums2) {
 
        $n = count($nums1) + count($nums2);  //一共有多少个数据
    $arr = [];  //合并数组
        $gav = 0; //中位数
 
        $arr = array_merge($nums1,$nums2); //合并数组
 
        sort($arr); //排序
 
        if($n%2){ //判断奇数还是偶数
            $gav = $arr[intval($n/2)];
        }else{
            $gav = ($arr[$n/2] + $arr[$n/2 - 1])/2;
        }
        return $gav;
    }
}
posted @ 2019-11-28 22:40  野香蕉  阅读(807)  评论(0编辑  收藏  举报